sql >> Database >  >> RDS >> Mysql

Krijg gebruikers commentaar van Mysql met behulp van Php

U gebruikt enkele aanhalingstekens in uw insert-statement :

$sth3 = $pdo3->prepare('
    INSERT INTO Comment (info, pID, cID)
    VALUES($comm, $pID3, $cID)
');

Met die simpele aanhalingstekens, $comm wordt niet geëvalueerd -- en de letterlijke $comm string wordt naar de database gestuurd -- wat resulteert in iets dat je waarschijnlijk niet helemaal verwacht.


Als u wilt dat variabelen worden geïnterpoleerd, moet u dubbele aanhalingstekens rond je string .

Maar, aangezien u voorbereide verklaringen probeert te gebruiken, is dat niet wat u zou moeten doen , eigenlijk.

In plaats daarvan moet u tijdelijke aanduidingen gebruiken in de verklaring -- en koppel deze vervolgens aan uw gegevens bij het uitvoeren van de instructie.


Uw prepare zou er ongeveer zo uitzien, denk ik :

$sth3 = $pdo3->prepare('
    INSERT INTO Comment (info, pID, cID)
    VALUES(:comm, :pID3, :cID)
');

Let op de :comm , :pID3 , en :cID tijdelijke aanduidingen.

En dan, bij het uitvoeren van de instructie, geef je wat echte gegevens door, om overeen te komen met de tijdelijke aanduidingen:

$sth3->execute(array(':comm' => $comm,':pID3' => $pID3,':cID' => $cID,));


Aanvullende opmerking:aangezien u voorbereide instructies gebruikt, hoeft u mysql_real_escape_string() niet te gebruiken (wat geen PDO-gerelateerde functie is, BTW, en alleen mag worden gebruikt bij het werken met mysql_* functies) :het ontsnappen wordt afgehandeld door het voorbereide verklaringsmechanisme zelf.



  1. C# oproep orakel opgeslagen functie

  2. Kun je auto-increment gebruiken in MySql zonder dat dit de primaire sleutel is?

  3. MySQL en Oracle Database instellen Mac OS X

  4. Bewaar byte-array in MySQL met Hibernate