我写过这个小函数,它有两个更新两列。但它不起作用。表中有一列名为 currentstatus ,其值必须从排队更改为已完成,列使用时间其值需要增加+1。增量也不会发生。
过去几个小时我一直试图解决这个问题。但这似乎不起作用。
可能是什么问题? 任何建议都表示赞赏。
function updateMessageQueue($indexid)
{
//this function would update that the messagequeue has been completed
$status = "Completed";
global $conn;
try
{
$statement = $conn->prepare("UPDATE messagequeue set currentstatus = :currentstatus AND usedtimes = usedtimes+1 where indexid = :index ");
$statement->bindParam(':currentstatus',$status);
$statement->bindParam(':index',$indexid);
$statement->execute();
$statement->closeCursor();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
答案 0 :(得分:2)
您有一个 AND
关键字,其中包含逗号。
SQL语法无效。正如Bill Karwin所指出的,SQL语法 有效。
AND
关键字会导致此表达式:
:currentstatus AND usedtimes = usedtimes+1
要在布尔上下文中进行求值,因此表达式将返回零或NULL;并将该表达式的结果分配给currentstatus
列。
答案 1 :(得分:1)
使用此
UPDATE messagequeue set currentstatus = :currentstatus , usedtimes = usedtimes+1
where indexid = :index