Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobierz komentarze użytkowników z Mysql za pomocą PHP

Używasz pojedynczych cudzysłowów w instrukcji insert :

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

Za pomocą tych prostych cudzysłowów $comm nie będą oceniane -- i literał $comm ciąg znaków zostanie wysłany do bazy danych - w wyniku czego prawdopodobnie się nie spodziewasz.


Jeśli chcesz, aby zmienne były interpolowane, powinieneś użyć podwójne cudzysłowy wokół ciągu .

Ale ponieważ próbujesz użyć przygotowanych oświadczeń, nie to powinieneś robić właściwie.

Zamiast tego powinieneś użyć symboli zastępczych w oświadczeniu -- a następnie powiąż je ze swoimi danymi podczas wykonywania instrukcji.


Twoje prepare wyglądałoby trochę tak, jak sądzę :

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

Zwróć uwagę na :comm , :pID3 i :cID symbole zastępcze.

I wtedy, podczas wykonywania instrukcji, faktycznie przekażesz kilka prawdziwych danych, odpowiadających symbolom zastępczym :

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


Dodatkowa uwaga:ponieważ używasz przygotowanych wyciągów, nie musisz używać mysql_real_escape_string() (który nie jest funkcją związaną z PDO, BTW, i powinien być używany tylko podczas pracy z mysql_* funkcje) :ucieczką zajmuje się sam przygotowany mechanizm wypowiedzi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Weryfikacja certyfikatu w Cloud SQL

  2. GROUP BY miesiąc w polu DATETIME

  3. Użycie COUNT do wyświetlania odrębnych rekordów z więcej niż 2 wystąpieniami w MySQL

  4. uruchomienie kontenera dockera wymaga co najmniej 1 argumentu

  5. Google Cloud SQL z SSL z Compute Engine i/lub sieci zewnętrznej