Mysql
 sql >> Database >  >> RDS >> Mysql

Ottieni commenti dagli utenti da Mysql utilizzando Php

Stai usando virgolette singole nella tua dichiarazione di inserimento :

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

Con quelle semplici virgolette, $comm non verrà valutato -- e il letterale $comm la stringa verrà inviata al database, risultando in qualcosa che probabilmente non ti aspetti.


Se vuoi che le variabili vengano interpolate, dovresti usare virgolette intorno alla stringa .

Ma poiché stai cercando di utilizzare dichiarazioni preparate, non è quello che dovresti fare , in realtà.

Invece, dovresti utilizzare i segnaposto nell'istruzione -- e, quindi, associarli ai tuoi dati, durante l'esecuzione dell'istruzione.


Il tuo prepare sarebbe un po' così, suppongo :

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

Nota il :comm , :pID3 e :cID segnaposto.

E, quindi, durante l'esecuzione dell'istruzione, passerai effettivamente alcuni dati reali, per corrispondere ai segnaposto:

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


Nota aggiuntiva:poiché stai utilizzando istruzioni preparate, non è necessario utilizzare mysql_real_escape_string() (che non è una funzione relativa a PDO, BTW, e dovrebbe essere usata solo quando si lavora con mysql_* funzioni) :l'evasione è gestita dal meccanismo stesso dell'enunciato preparato.