sql >> Databáze >  >> RDS >> Mysql

Použití pdo v php s uloženou procedurou

Musíte použít bindValue místo bindParam .

Když použijete bindParam, sváže zadanou proměnnou s parametrem, nikoli s hodnotou proměnné.

Takže, pokud to uděláte:

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

Ve skutečnosti se provádí s 6 spíše než 5. K tomu musí mít metoda odkaz na proměnnou. Nemůžete mít odkaz na literál, takže to znamená, že bindParam nelze použít s literály (nebo čímkoli, na co nemůžete odkazovat).

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

Potom:

$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. SQL:Vyberte záznamy, kde VŠECHNY spojené záznamy splňují určitou podmínku

  2. Další informace o zřetězení v SQL s příklady

  3. MySQL - aktualizace všech záznamů, aby odpovídaly maximální hodnotě ve skupině

  4. B-strom vs hash tabulka