我有这样的查询

SET @update_id := 0;
UPDATE table SET column = something, id = (SELECT @update_id := id)
WHERE condition
LIMIT 1;
SELECT @update_id;


应该更新一列并返回更新后的行的ID。如您所见,在执行查询之前,我没有该行的ID。
我正在使用pdo,有没有办法在php中获取@updated_id的值?
尝试使用SQLSTATE[HY000]: General error时得到$stmt->fetchColumn();
我也确定查询是正确的,因为我在phpMyadmin中执行了它,并且返回了正确的值,因此可以正常工作。 phpMyadmin中的结果如下所示:

|   @updated_id    |
|------------------|
|        32        |


并更新ID为32(具有条件)的行中的所需列。
有什么想法吗?

最佳答案

我认为您可以在读取简单表时读取此值。您还可以添加字段别名并按名称-SELECT @update_id AS updated_id读取此字段。

另一个变体是使用SELECT...FOR UPDATE语句。

关于php - 在PHP中获取MySQL用户定义的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12274829/

10-11 21:56