0

尝试绑定参数时出现错误:“在......中的非对象上调用成员函数 bind_param()”这些查询在单独的脚本上运行良好,但是当我想嵌套运行它们时,我不断得到同样的错误。我已经尝试了很多来找出如何解决它,但无法解决。

$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$ignore_time=time()-(24*60*60);
$stmt=$mysqli->prepare("select id,new_count from view_gallery where lastUpdate< ? and new_count >0");
$stmt->bind_param('i',$ignore_time);
$stmt->execute();
$stmt->bind_result($id, $count);
while($stmt->fetch())
{
    $stmt_new=$mysqli->prepare("update gallery set power=power + ? where id= ?");
    $power=$count* 0.01;
    $stmt_new->bind_param('di',$power,$id);
    $stmt_new -> execute();
}

错误在循环内的 bind_param 行中引发。

4

2 回答 2

1

该错误是因为您的prepare()调用未返回有效对象。这是因为您的 SQL 查询是错误的。

在您的查询中,您有powerwhich 是 MySQL 中的保留函数关键字

在查询中使用反引号将其转义,您的代码将起作用。

$stmt_new = $mysqli->prepare( "UPDATE gallery SET `power` = `power` + ? WHERE `id` = ?" );

使用反引号始终是一个好习惯。

于 2013-03-11T09:58:10.563 回答
0

解决方案是保存外循环的结果:

$stmt->store_result();

就在while循环的正上方。

于 2013-03-11T10:14:48.460 回答