Php 使用pdo获取mysql用户定义变量
我正在使用pdo,我有一个这样的查询Php 使用pdo获取mysql用户定义变量,php,mysql,pdo,Php,Mysql,Pdo,我正在使用pdo,我有一个这样的查询 $stmt=$db->query("SET @update_id := 0; UPDATE table SET column = something, id = (SELECT @update_id := id) WHERE condition LIMIT 1; 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;");
它应该更新一行并返回id。我确信查询本身是有效的,因为我在phpmyadmin中运行了它,它返回了一个名为@updated_id的列,其更新行的值如下:
| @updated_id |
|------------------|
| *correct id* |
我想获取@updated_id的值并将其存储在php变量中。我尝试了
$stmt->fetchColumn()
和$stmt->fetchColumn()代码>但是我得到了SQLSTATE[HY000]:一般错误
我一直在找工作,但什么也找不到。
那么有人知道如何在php变量中存储@updated_id的值吗?
正如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();
在phpMyAdmin中执行查询。它的回报是什么?另外,它应该是这样读的:SET@update\u id=0@正如我所说,SteAp返回一个名为@updated\u id
的列,该列下面有正确的值。我还使用了这里的查询,它似乎是正确的,因为它在phpmyadmin中工作。问题是我没有id,我必须在另一个查询中选择id并稍后更新,或者使用问题中编写的查询。
$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();