Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用pdo获取mysql用户定义变量_Php_Mysql_Pdo - Fatal编程技术网

Php 使用pdo获取mysql用户定义变量

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

我正在使用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]:一般错误

我一直在找工作,但什么也找不到。
那么有人知道如何在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();