Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận bình luận của người dùng từ Mysql bằng Php

Bạn đang sử dụng dấu ngoặc kép trong câu lệnh chèn của mình:

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

Với những dấu ngoặc kép đơn giản đó, $comm sẽ không được đánh giá - và chữ $comm chuỗi sẽ được gửi đến cơ sở dữ liệu - dẫn đến điều mà bạn có thể không mong đợi.


Nếu bạn muốn các biến được nội suy, bạn nên sử dụng dấu ngoặc kép xung quanh chuỗi của bạn .

Tuy nhiên, khi bạn đang cố gắng sử dụng các tuyên bố chuẩn bị sẵn, đó không phải là điều bạn nên làm , thực sự.

Thay vào đó, bạn nên sử dụng trình giữ chỗ trong câu lệnh - và sau đó, liên kết chúng với dữ liệu của bạn, khi thực hiện câu lệnh.


prepare của bạn sẽ trông giống như thế này, tôi cho rằng:

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

Lưu ý :comm , :pID3:cID trình giữ chỗ.

Và sau đó, khi thực hiện câu lệnh, bạn sẽ thực sự chuyển một số dữ liệu thực, tương ứng với các trình giữ chỗ:

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


Lưu ý bổ sung:vì bạn đang sử dụng các câu lệnh đã chuẩn bị sẵn, bạn không cần phải sử dụng mysql_real_escape_string() (không phải là một hàm liên quan đến PDO, BTW và chỉ nên được sử dụng khi làm việc với mysql_* chức năng) :việc trốn thoát được xử lý bởi chính thuyết mecanism đã chuẩn bị sẵn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bỏ qua tiêu chí WHERE cụ thể

  2. Chuỗi ký tự UTF-8 không hợp lệ khi nhập tệp CSV vào cơ sở dữ liệu MySQL

  3. Laravel 5.1 - Kết nối với Cơ sở dữ liệu MySQL (MAMP)

  4. Làm cách nào để kết nối với Cơ sở dữ liệu MySQL từ Ứng dụng Android?

  5. Khóa ngoại có điều kiện cho nhiều bảng