我正在使用一个准备好的语句我已经在bind_param中传递了与我期望的完全相同数量的变量,但它仍然给我一个变量计数的错误并不匹配。这里的代码< / p>
$query="select `shipping_name`,`shipping_address1`,`shipping_address12`,`shipping_city`,`shipping_state`,`shipping_postalcode`,`billing_name`,`billing_address2`,`billing_address22`,`billing_city`,`billing_state`,`billing_postalcode` from puppy_shipping where unique_id=?";
$stmt = $db->prepare($query);
$bind='ssssssssssss';
if($stmt){
$stmt->bind_param('s',$id);
$stmt->execute();
$stmt->bind_result($bind,$shipping_name,$shipping_address1,$shipping_address12,$shipping_city,$shipping_state,$shipping_postalcode,$billing_name,$billing_address2,$billing_address22,$billing_city,$billing_state,$billing_postalcode);
while ($stmt->fetch())
{
}
$stmt->close();
}
答案 0 :(得分:2)
你的问题在于这一行
$stmt->bind_result($bind, $shipping_name,$shipping_address1,$shipping_address12, ....);
你试图绑定变量类型,就像使用bind_param()
一样,这是错误的 - 因为这个函数没有这样的参数。 bind_result()
唯一的参数是您从查询中选择的值,没有别的。
解决方案是从$bind
来电中删除bind_result()
,将其设为
$stmt->bind_result($shipping_name, $shipping_address1, $shipping_address12, ....);
参考
答案 1 :(得分:0)
面向对象的样式
$stmt->bind_result($name, $code);
程序样式
mysqli_stmt_bind_result($stmt, $name, $code);