したがって、私はMysqliでPHPを使用しており、非常に基本的なプリペアドステートメントを実行しようとしています。
$stmt = $mysqli->prepare("SELECT field FROM blubb WHERE id=? AND username=? LIMIT 1");
while($doingStuff){
// Do Stuff
$stmt->bind_param("is", $id, $username);
$stmt->execute();
// Do Stuff
}
しかし、実行を実行しようとすると、内部サーバーエラーが発生します。
すでに設定しました
error_reporting(E_ALL);
ini_set("display_errors", 1);
私のスクリプトでは、何が問題なのかを知るためにエラーメッセージが表示される可能性があると考えていますが、それでも内部サーバーエラーです。
私も試しました
$stmt->execute() or die("error msg");
しかし、それでも同じエラーであり、サーバーエラーログにも何もありません。私も試したのは、$ idをintに明示的にキャストすることでしたが、役に立ちませんでした。
これをデバッグしてエラーを見つけるにはどうすればよいですか?スクリプトから適切なエラーメッセージを取得できないようです。また、使用している他の準備されたStatemenが正常に実行されているため、何が間違っているのかわかりません。
編集:わかりました、問題の原因を見つけました。これを実行しようとしていました
while($doStuff){
method($stmt1, $stmt2)
}
method($stmt1, $stmt2){
// handle $stmt1
// stuff
// handle $stmt2
}
この記事によると、これは不可能です http://www.ioncannon.net/programming/889/php-mysqli-and-multiple-prepared-statements/
変更するだけでエラーを修正しました
while($doingStuff){
// Do Stuff
$stmt->bind_param("is", $id, $username);
$stmt->execute();
// Do Stuff
}
に
while($doingStuff){
// Do Stuff
$stmt->bind_param("is", $id, $username);
$stmt->execute();
$stmt->store_result();
// Do Stuff
}
最初のステートメントで。
ただし、共有ホスティングを使用しているため、php.iniを変更できないため、内部サーバーエラーではなく実際のエラーを取得する方法を知りたいです。