sql >> Database >  >> RDS >> Mysql

Pdo gebruiken in php met opgeslagen procedure

U moet bindValue gebruiken in plaats van bindParam .

Wanneer u bindParam gebruikt, bindt het de opgegeven variabele aan de parameter, niet de waarde van de variabele.

Dus, als je dat doet:

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

Het wordt eigenlijk uitgevoerd met 6 in plaats van 5. Om dit te doen, moet de methode een verwijzing naar de variabele hebben. U kunt geen verwijzing naar een letterlijke waarde hebben, dus dit betekent dat bindParam niet kan worden gebruikt met letterlijke waarden (of iets waar u geen verwijzing naar kunt hebben).

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

Dan:

$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. Hoe te ontsnappen aan het waardesleutelwoord in mysql tijdens het gebruik van de Select-instructie

  2. Best practices voor zacht verwijderen (PHP/MySQL)

  3. Volgende automatische verhoging ophalen

  4. Sla het queryresultaat op in een variabele met behulp van in PL/pgSQL