sql >> データベース >  >> RDS >> Mysql

MYSQLIプリペアドステートメントは出力を続行しません

    最初の問題は、すべてをチェックしていなかったことです。 失敗を呼びかけ、最初はほんの数人。両方の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分析ツールにあります。何が欲しいかを事前に知っているなら、それを求めるべきです。



    1. meta_query、関係ORとANDの両方を使用して検索する方法は?

    2. MYSQL:mysqlの1つのテーブルから別のテーブルに行全体をコピーし、2番目のテーブルに1つの余分な列があるようにするにはどうすればよいですか?

    3. ./mysqldumpの実行時に特殊文字を保持する方法は?

    4. 行の最大値を見つける方法