sql >> Database teknologi >  >> RDS >> Mysql

Brug af pdo i php med lagret procedure

Du skal bruge bindValue i stedet for bindParam .

Når du bruger bindParam, binder den den angivne variabel til parameteren, ikke værdien af ​​variablen.

Så hvis du gør det:

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

Den udføres faktisk med 6 i stedet for 5. For at gøre dette skal metoden have en reference til variablen. Du kan ikke have en reference til en bogstavelig, så det betyder, at bindParam ikke kan bruges med bogstaver (eller noget, du ikke kan have en reference til).

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

Så:

$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. MySQL password() funktion til PHP

  2. Android- Skal jeg kontrollere, om en tabel findes i SqliteHelper.onCreate()?

  3. Mislykkes med at initialisere MySQL-databasen på Windows 10

  4. Hvad er forskellen mellem eksplicitte og implicitte markører i Oracle?