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

Sử dụng pdo trong php với thủ tục được lưu trữ

Bạn cần sử dụng bindValue thay vì bindParam .

Khi bạn sử dụng bindParam, nó liên kết biến được cung cấp với tham số, không phải giá trị của biến.

Vì vậy, nếu bạn làm:

$x = 5;
$stmt->bindParam(1, $x, PDO::PARAM_INT);
$x = 6;
$stmt->execute(); //executes with 6 instead of 5

Nó thực sự được thực thi với 6 chứ không phải 5. Để làm điều này, phương thức phải có một tham chiếu đến biến. Bạn không thể có tham chiếu đến một ký tự, vì vậy điều này có nghĩa là bindParam không thể được sử dụng với ký tự (hoặc bất kỳ thứ gì bạn không thể có tham chiếu đến).

$x = 5;
$stmt->bindValue(1, $x, PDO::PARAM_INT);
$x = 6;
$stmt->execute(); //executes with 5 instead of 6

Sau đó:

$stmt->bindParam(1, 1, PDO::PARAM_INT); 
//invalid because there's no way to pass a literal 1 by reference
$stmt->bindValue(1, 1, PDO::PARAM_INT);
//valid


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. phân vùng tự động cơ sở dữ liệu mysql

  2. MySQL:Tổng số NHÓM BẰNG CÁCH CÓ ROLLUP gây tò mò

  3. Đường ray 3 - Tải hào hứng với các điều kiện

  4. Lưu các đối tượng Python Pickled trong MySQL db

  5. Làm cách nào để chuyển đổi câu lệnh SQL này thành Django QuerySet?