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

Używanie pdo w php z procedurą składowaną

Musisz użyć bindValue zamiast bindParam .

Kiedy używasz bindParam, wiąże dostarczoną zmienną z parametrem, a nie wartością zmiennej.

Tak więc, jeśli to zrobisz:

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

W rzeczywistości jest wykonywany z 6 zamiast 5. Aby to zrobić, metoda musi mieć odwołanie do zmiennej. Nie możesz mieć odniesienia do literału, co oznacza, że ​​bindParam nie może być używany z literałami (ani niczym, do czego nie możesz mieć odniesienia).

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

Następnie:

$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. Używanie dict Pythona do instrukcji SQL INSERT

  2. Django - OperationalError:(2006, „Serwer MySQL zniknął”)

  3. Jak przekonwertować bazę danych MySQL na kodowanie UTF-8?

  4. MySQL Uzupełnij brakujące daty między dwiema datami dla danego statusu

  5. Jak publikować parametry zapytania za pomocą Axios?