0

データ入力を挿入できません。さまざまなチュートリアルとサンプルコードを見て数時間を費やしましたが、次のものが機能しない理由がわかりません。

$data1 = 0;
$data2 = "pumpkin";
$data3 = "cake";
$data4 = "orange";
$data5 = "sweet";
$stmt = $mysqli->stmt_init();
// Here I have a few SELECT queries that checks if $data2 and/or $data3 is already taken
$query = "INSERT INTO ". $mytable . " SET data1=?, data2=?, data3=?, data4=?, data5=?";
if ($stmt->prepare($query)) {
    $stmt->bind_param("issss", $data1, $data2, $data3, $data4, $data5);
    $stmt->execute() or trigger_error($mysqli->error); // added per Your Common Sense's suggestion
    //$stmt->bind_result($data1, $data2, $data3, $data4, $data5);
    $stmt->close();
    $mysqli->close();
} else {
    echo $mysqli->error; // edited per Yogesh Suthar's suggestion
    $stmt->close();
    $mysqli->close();
}

オンラインでエラーが発生し$stmt->bind_resultます。

警告: mysqli_stmt::bind_result(): バインド変数の数が準備済みステートメントのフィールド数と一致しません

私は何を間違っていますか?

$db_user、$db_password、$db_dbname が適切に定義された上に、次のものがあります。

$mysqli = new mysqli('localhost', $db_user, $db_password, $db_dbname);
4

2 に答える 2

0

INSERTクエリを実行していて、影響を受ける行数が返されるため、この行を削除してください。クエリにbind_resultのみ使用する必要があります。SELECT

$stmt->bind_result($data1, $data2, $data3, $data4, $data5);

これを使って

echo $mysqli->error;

それ以外の

echo "failed";
于 2013-02-19T05:52:06.567 に答える
-1

データが挿入されていない場合は、エラーが発生しています。
したがって、このエラーについてmysqlに問い合わせる必要があります

$stmt->execute() or trigger_error($mysqli->error);

したがって、特定のエラーが通知され、当て推量の必要はありません。

于 2013-02-19T06:23:38.730 に答える