Wie laufen die bind_param () - Anweisung in PHP?
Ich versuche zu machen, den folgenden code arbeiten, aber ich kann Sie nicht erreichen die execute()
Linie.
$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);
Die Ausgabe, die ich bekomme, ist:
Connected
Prepared and binding parameters
Also das problem sollte werden in Zeile 5, aber die überprüfung der Handbuch der bind_param()
kann ich keinen syntax-Fehler gibt.
- Warum nicht echo der empfangene Fehler zu Debuggen es? Ich denke, echo
$stmt->error
bekommen Sie die genaue Fehlermeldung von mysql beschweren. - Ich aktualisiert meine Frage, denn jetzt kann ich auch nicht ausführen Sie die folgende Zeile nach
bind_param()
! @Todd, Die ist nützlich, wichtig, im Hinterkopf haben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als verbindliche Parameter, den Sie übergeben Sie eine variable, die als Referenz verwendet:
Finden Sie im Handbuch: http://php.net/manual/en/mysqli-stmt.bind-param.php
Beachten Sie, dass
$var
tatsächlich nicht definiert werden, es zu binden. Das folgende ist vollkommen gültig:hier ist es einfach nur eine einfache Erklärung
deklarieren Sie eine variable zu binden
Ihre eigentliche problem ist nicht in Zeile 5, sondern in Zeile 1.
Sie versuchen, zu verwenden, unbrauchbar Treiber.
Während PDO genau das tut, was Sie wollen.
Nach all den Jahren die vergangen sind, seit dieser Antwort wurde geschrieben, eine neue PHP-feature entstanden, als "argument Auspacken". So, seit der version 5.6 können Sie einen Wert in bind_param:
Aber noch immer haben Sie ein Problem mit Ihre Daten immer wieder aus einer vorbereiteten Anweisung 🙂