这就是我为特定用户名选择最高ID的方式
SELECT * FROM messages WHERE user='me' ORDER BY id DESC LIMIT 0, 1
我的列名为“send”,用户名为me
现在我想像这样更新它:
UPDATE messages SET `send`='ok' WHERE user='me' ORDER BY id DESC LIMIT 0, 1
我收到语法错误
答案 0 :(得分:0)
limit
中的update
仅允许行计数,而不是偏移量:
UPDATE messages
SET `send`='ok'
WHERE user='me'
ORDER BY id DESC
LIMIT 1;
答案 1 :(得分:0)
我觉得你在这里为自己做好准备。
如果您要在更新前选择最高ID,则:
SELECT max(id) FROM messages WHERE user='me'
您的UPDATE应该使用刚才检索的相同ID作为WHERE子句。否则,您可以使用“ok”更新错误的行。完整代码,正如我所做的那样:
// Get ID to update
$idToUpdate_q = $pdoConn->prepare("SELECT max(messages.id) FROM messages WHERE user = :user");
$idToUpdate_q->bindValue(':user','me');
$idToUpdate_q->execute();
$idToUpdate = $idToUpdate_q->fetchColumn();
// Update Row
$updateRow_sql = $pdoConn->prepare("UPDATE messages
SET
messages.send = :send
WHERE
messages.id = :idToUpdate");
$updateRow_sql->execute(array(
':send' =>'ok',
':idToUpdate' =>$idToUpdate));