1

mysqlとphpでエラーが発生しました私のコード:

$stmt->prepare("INSERT `tablename` (col1,col2,col3) VALUES (?,?,?)");
$stmt->bind_param('sss',$_POST['data'],$sub,$yaxis);
$stmt->execute();

私のエラー:

Warning: mysqli_stmt::bind_param() [mysqli-stmt.bind-param]: Number of variables doesn't match number of parameters in prepared statement. 

しかし、bind_paramで3sと3つの引数を渡しました。このエラーが発生するのはなぜですか?

4

4 に答える 4

2

名前で指定しなかったため、パラメータのインデックスを使用します。

$data = $_POST['data'];
$stmt->prepare("INSERT `tablename` (col1,col2,col3) VALUES (?,?,?)");
$stmt->bind_param(1,$data);
$stmt->bind_param(2,$sub);
$stmt->bind_param(3,$yaxis);
$stmt->execute();

ただし、名前で表示する場合は、疑問符を使用する代わりに、パラメーター名を指定する必要があります。

$data = $_POST['data'];
$stmt->prepare("INSERT `tablename` (col1,col2,col3) VALUES (:sss,:par1,:par2)");
$stmt->bind_param(":sss",$data);
$stmt->bind_param(":par1",$sub);
$stmt->bind_param(":par2",$yaxis);
$stmt->execute();
于 2012-09-29T03:58:57.997 に答える
0

$_POST['data']フォームの値をbind_paramに直接渡す代わりに、nullかどうかを確認できます。また、挿入クエリが間違っていることに気付きました。

if(!empty($_POST['data'])){
$mydata=$_POST['data'];
}else{
$mydata='No values';
}

$stmt->prepare("INSERT into `tablename` (col1,col2,col3) VALUES (?,?,?)");//Query wrong
$stmt->bind_param('sss',$mydata,$sub,$yaxis);
$stmt->execute();
于 2012-09-29T04:10:56.300 に答える
0

$ _POSTには複数の変数が割り当てられているか、変数が割り当てられていません。

これにより、$_POST配列全体の内容が出力されます。

print_r($_POST);
于 2012-09-29T04:28:33.913 に答える
0

さて、これは私が愚かに聞こえることを知っていますが、エラーはスクリプトのさらに上の未定義の変数によって引き起こされました。これは私が修正しました。スクリプトのこの部分には影響しないと思いましたが、影響しました。投稿されたすべての回答は素晴らしいですが、私のせいで彼らは質問に答えません。

于 2012-10-02T03:19:47.187 に答える