最初の問題は、すべてをチェックしていなかったことです。 失敗を呼びかけ、最初はほんの数人。両方のstore_result
およびbind_result
失敗することもあります。
特定の問題(最初の問題を修正した後)は、select *
を実行していることです。 複数を取得するには 列ですが、バインドしているのは1つだけです 結果で。これは、bind_result
から表示されるエラーメッセージから明らかです。 電話:
select
を変更した場合 select id from ...
のようなステートメント 、動作を開始します。
ただし、したい 列が多いほど、バインディングに次のような変数を追加する必要があります。
$stmt = $db->prepare("SELECT col1, col2 FROM messages WHERE post_id = ?");
:
$ex = $stmt->bind_result($param1, $param2);
select *
を使用していないことに気付くでしょう そこまでは、ほとんどすべての状況で明示的な列の命名を使用して、次のようにすることをお勧めします。
- DBスキーマが変更されても驚かないでください。
- 必要なデータのみを取得します;
- 列を結果変数に適切にマッピングできます。
ほとんどのみ select *
を使用しても問題ないことがわかった場所 すべてを取得したいDB分析ツールにあります。何が欲しいかを事前に知っているなら、それを求めるべきです。