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.
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();
}
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);