Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan pdo di php dengan prosedur tersimpan

Anda perlu menggunakan bindValue alih-alih bindParam .

Saat Anda menggunakan bindParam, itu mengikat variabel yang diberikan ke parameter, bukan nilai variabel.

Jadi, jika Anda melakukannya:

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

Ini sebenarnya dieksekusi dengan 6 daripada 5. Untuk melakukan ini, metode harus memiliki referensi ke variabel. Anda tidak dapat memiliki referensi ke literal, jadi ini berarti bahwa bindParam tidak dapat digunakan dengan literal (atau apa pun yang Anda tidak dapat memiliki referensi).

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

Kemudian:

$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. Fungsi String MySQL (Daftar Lengkap)

  2. Praktik Terbaik untuk Membuat Indeks di Tabel MySQL Anda – Rolling Index Builds

  3. SQL UPDATE semua nilai dalam bidang dengan string yang ditambahkan CONCAT tidak berfungsi

  4. Mengapa MySQL sepenuhnya memformat ulang teks kueri VIEW?

  5. Panjang MySQL () vs char_length ()