私はPHPが初めてで、準備されたステートメントを機能させようとしています。これは私の大学での最終年度のプロジェクトであり、準備済みステートメントは優れたプラクティスであり、SQL インジェクションにも適していると読んだことを覚えています。ただし、次のコードでは Server 500 エラーが発生します。
<?php
$email = "blah@blah.co.uk";
$hash = "somerandomhashedpassword";
$db = new mysqli("localhost", "root", "1234", "UEAnetwork");
$sql = "INSERT INTO Students (Email, Password) VALUES (?,?)";
$stmt = $db->prepare($sql);
$stmt->bindValue(1, $email);
$stmt->bindValue(2, $hash);
if ($stmt->execute()) {
echo "You have registered!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
}
?>
以下を実行すると、行が挿入されるので、データベースに正しく接続していると確信できます。
<?php
$db = new mysqli("localhost", "root", "1234", "UEAnetwork");
$sql = "INSERT INTO Students (Email, Password) VALUES ('blah@blah.co.uk','somerandomhashedpassword')";
$stmt = $db->prepare($sql);
if ($stmt->execute()) {
echo "You have registered!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
}
?>
私はbindValue
間違って使用していますか?オンラインの多くのチュートリアルでこのように使用されているのを見てきましたが、何か間違ったことをしているに違いありません。