Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir les commentaires des utilisateurs de Mysql en utilisant Php

Vous utilisez des guillemets simples dans votre instruction d'insertion :

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

Avec ces simples guillemets, $comm ne sera pas évalué -- et le littéral $comm chaîne sera envoyée à la base de données -- résultant en quelque chose auquel vous ne vous attendez probablement pas tout à fait.


Si vous souhaitez que les variables soient interpolées, vous devez utiliser guillemets doubles autour de votre chaîne .

Mais, comme vous essayez d'utiliser des instructions préparées, ce n'est pas ce que vous devriez faire , en fait.

Au lieu de cela, vous devez utiliser des espaces réservés dans la déclaration -- et, ensuite, les lier à vos données, lors de l'exécution de l'instruction.


Votre prepare ressemblerait un peu à ça, je suppose :

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

Notez le :comm , :pID3 , et :cID espaces réservés.

Et, ensuite, lors de l'exécution de l'instruction, vous passerez en fait des données réelles, pour correspondre aux espaces réservés :

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


Remarque supplémentaire :comme vous utilisez des instructions préparées, vous n'êtes pas obligé d'utiliser mysql_real_escape_string() (qui n'est pas une fonction liée à PDO, BTW, et ne doit être utilisée que lorsque vous travaillez avec mysql_* fonctions) :l'échappement est traité par le mécanisme d'instructions préparées lui-même.