-1

テーブルに行を挿入する mysqli 関数があります。私はエラーを取り戻しています

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of 
fields in prepared statement

insert nto が true または false を返すと思っていたので、これは奇妙です。SQLステートメントを使用している関数は次のとおりです。

function add_project_deadline ($mysqli, $project_id, $deadline) {


if ($stmt = $mysqli->prepare("INSERT INTO `project_deadline` (project_id, deadline) 
    VALUES (?, ?)")){
    $stmt->bind_param('is', $project_id, $deadline);
    $stmt->execute();
    $stmt->bind_result($return);
    $stmt->close();
    return $return;
} else {return false;}  

}

私の質問は、なぜこの bind_result エラーが発生するのか、どうすれば修正できるのかということです。

4

1 に答える 1

1

結果のないクエリを実行しているため、データのフェッチ INSERTは必要ありません。SELECT ステートメントで使用される列にバインドするためのものです。bind_resultbind_result

mysqli_stmt::execute()true成功またはfalse失敗時に返されるため、その値を$return変数に割り当てるだけです。

execute()false を返す場合、INSERTステートメントは何らかの理由で失敗しました。が返さtrueれた場合、処理は成功しており、ステートメント オブジェクトINSERTのプロパティを調べることで、挿入された行数を判断できます。mysqli_stmt::$affected_rows

そのため、そのエラーが発生しています。役立つことを願っています。この情報のほとんどは、 のマニュアル ページで見つけることができますmysqli_stmt::execute()

于 2012-10-01T23:48:25.340 に答える