web-dev-qa-db-fra.com

Comment exécuter l'instruction bind_param () en PHP?

J'essaie de faire fonctionner le code suivant mais je ne peux pas atteindre la ligne execute().

$mysqli = $this->ConnectLowPrivileges();
echo 'Connected<br>';
$stmt = $mysqli->prepare("SELECT `name`, `lastname` FROM `tblStudents` WHERE `idStudent`=?");
echo 'Prepared and binding parameters<br>';
$stmt->bind_param('i', 2 );
echo 'Ready to execute<br>'
if ($stmt->execute()){
    echo 'Executing..';
    }
} else {
    echo 'Error executing!';
}
mysqli_close($mysqli);

Le résultat obtenu est:

Connected
Prepared and binding parameters

Donc, le problème devrait être à la ligne 5, mais en vérifiant le manuel de bind_param() , je ne trouve aucune erreur de syntaxe.

9
Lucio

Lorsque vous liez des paramètres, vous devez passer une variable utilisée comme référence:

$var = 1;

$stmt->bind_param('i', $var);

Voir le manuel: http://php.net/manual/en/mysqli-stmt.bind-param.php

Notez que $var n'a pas besoin d'être défini pour le lier. Ce qui suit est parfaitement valide:

$stmt->bind_param('i', $var);

foreach ($array as $element)
{

    $var = $element['foo'];

    $stmt->execute();

}
13
MichaelRushton

ici c'est juste une explication simple
déclare qu'une variable est liée

    $var="email";
$mysqli = $this->ConnectLowPrivileges();
echo 'Connected<br>';

$var="email";
$stmt = $mysqli->prepare("SELECT name, lastname FROM tablename WHERE idStudent=?" LIMIT=1);
echo 'Prepared and binding parameters<br>';
$stmt->bindparam(1,$var); 
0
x00