Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на pdo в php със съхранена процедура

Трябва да използвате bindValue вместо bindParam .

Когато използвате bindParam, той свързва предоставената променлива с параметъра, а не стойността на променливата.

Така че, ако го направите:

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

Всъщност се изпълнява с 6, а не с 5. За да направите това, методът трябва да има препратка към променливата. Не можете да имате препратка към литерал, така че това означава, че bindParam не може да се използва с литерали (или всичко, към което не можете да имате препратка).

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

След това:

$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. MySQL не използва индекси (Използване на файлово сортиране), когато използва ORDER BY

  2. Пакетен файл за mysqldump за архивиране на всяка база данни в отделен файл

  3. MAX() срещу GREATEST() в MySQL:Каква е разликата?

  4. Как да наложите char(N) тип данни вместо varchar(N) в полето на модела на django

  5. Как да инсталирате и конфигурирате phpMyAdmin на Debian 8