sql >> Databáze >  >> RDS >> Mysql

Získejte komentáře uživatelů z Mysql pomocí PHP

V příkazu insert používáte jednoduché uvozovky:

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

S těmito jednoduchými uvozovkami $comm nebude hodnocení -- a doslovný $comm řetězec bude odeslán do databáze – výsledkem je něco, co pravděpodobně úplně neočekáváte.


Pokud chcete, aby byly proměnné interpolovány, měli byste použít uvozovky kolem řetězce .

Ale když se pokoušíte používat připravená prohlášení, neměli byste to dělat , vlastně.

Místo toho byste měli ve výpisu použít zástupné symboly -- a poté je při provádění příkazu spojte se svými daty.


Vaše prepare by to vypadalo trochu takto, předpokládám :

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

Všimněte si :comm , :pID3 a :cID zástupné symboly.

A pak při provádění příkazu skutečně předáte nějaká skutečná data, aby odpovídala zástupným symbolům:

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


Dodatečná poznámka:protože používáte připravené příkazy, nemusíte používat mysql_real_escape_string() (což není funkce související s PDO, BTW, a měla by být použita pouze při práci s mysql_* funkce) :útěk je řešen samotným připraveným výrokovým mechanismem.



  1. Existuje způsob, jak vytvořit více spouštěčů v jednom skriptu?

  2. android.database.CursorIndexOutOfBoundsException

  3. mysqli_query() očekává alespoň 2 parametry, z nichž 1 je uveden v?

  4. 12c Automatické vyplnění sloupce se sekvenční hodnotou