致命错误:更新时,在非对象上调用成员函数bind_param()

时间:2013-09-03 10:17:19

标签: php mysql

这让我发疯了...希望有人能指出我在这里缺少的东西。

我有一个mysql表,它保存客户端查询,每个查询可以容纳多个问题。 我想要它,以便在有任何未解决的问题时不能关闭查询。

要执行此操作,我使用if语句检查状态的发布值,如果设置为关闭,我执行COUNT ..如果有任何结果是OPEN,则显示错误,否则继续更新

我收到以下错误 - 致命错误:在非对象上调用成员函数bind_param()

我尝试回应每个变量而不是更新,它们都正确显示。

这是代码

$id=$_SESSION['SESS_ENQID'];

$enqdate=$_POST['enqdate'];
$enqsrc=$_POST['enqsrc'];
$notes=$_POST['notes'];
$enqstat=$_POST['enqstat'];

if($enqstat == 'CLOSED'){
$qry1 = "SELECT COUNT(*)FROM enqissuetbl WHERE enqstat = 'OPEN' AND enqid = ?"; 
$stmt = $mysqli->prepare($qry1);
$stmt->bind_param('i',$id);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();

if($count >= '1')
{
printf("ERROR: All associated issues must be in a closed state before you can close an enquiry");
}
elseif($count == '0')
{
$qry2 = "UPDATE enqtbl 
SET enqdate = ?, enqsrc = ?, notes = ?, enqstat = ?
WHERE enqtbl.enqid = ? ";

$stmt2 = $mysqli->prepare($qry2);
$stmt2->bind_param('ssssi', $enqdate, $enqsrc, $notes, $enqstat, $id);

$stmt2->execute();
$stmt2->close();

printf("Enquiry successfully updated.");
unset($_SESSION['SESS_ENQID']); 
}
}

1 个答案:

答案 0 :(得分:0)

最后弄清楚了,两个查询都在哪里好,这个问题只发生在因为它们嵌套...添加$ stmt-> store_result();到外部查询解决了它。