我正在使用pdo,我有这样的查询
$stmt=$db->query("SET @update_id := 0;
UPDATE table SET column = something, id = (SELECT @update_id := id)
WHERE condition
LIMIT 1;
SELECT @update_id;");
应该更新一行并返回id 我确定查询本身是有效的,因为我在phpmyadmin中运行它并返回一个名为@updated_id的列,其中包含更新行的值,如下所示:
| @updated_id |
|------------------|
| *correct id* |
我想获取@updated_id的值并将其存储在php变量中
我尝试了$stmt->fetchColumn();
和$stmt->fetchColumn();
,但我得到了SQLSTATE[HY000]: General error
我一直在寻找可以工作的东西,但我找不到任何东西
所以有人知道如何将@updated_id的值存储在php变量中吗?
谢谢
答案 0 :(得分:0)
<?php
$id = 123;
$query = "UPDATE table SET column = something, id = ? WHERE condition LIMIT 1;"
$st = $db->prepare($query);
$st->execute(array(
$id
));
$result = $st->fetch(PDO::FETCH_ASSOC);
var_dump($result);
你尝试过类似的东西吗?获取修改后的陈述
答案 1 :(得分:0)
正如Petah在评论中建议的那样,您需要遍历每个行集,直到找到要获取的SELECT语句。
鉴于上面的例子,这应该有效:
$stmt=$db->query("SET @update_id := 0;
UPDATE table SET column = something, id = (SELECT @update_id := id)
WHERE condition
LIMIT 1;
SELECT @update_id;");
$stmt->nextRowset();
$stmt->nextRowset();
$update_id = $stmt->fetchColumn();