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 你可以检查它是否为空。另外我注意到你的插入查询是错误的

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 回答