在 PHP 中,当将 PDO 与 pgSQL 一起使用时,如何在原始 INSERT sql 查询中获取“RETURNING”子句的值

Posted

技术标签:

【中文标题】在 PHP 中,当将 PDO 与 pgSQL 一起使用时,如何在原始 INSERT sql 查询中获取“RETURNING”子句的值【英文标题】:In PHP, when using PDO with pgSQL how to get the value of "RETURNING" clause in the original INSERT sql query 【发布时间】:2011-01-09 15:19:14 【问题描述】:

php 中,我将 PDO 与 pgSQL 驱动程序一起使用。我想知道如何获取 INSERT sql 查询中给出的“RETURNING”子句的值。 我现在的代码是这样的,

$query = 'INSERT INTO "TEST" (firstname, lastname) VALUES ('John', 'Doe') RETURNING user_id';
$queryHandle = $connection->prepare($query);
$queryHandle->execute();

显然

$queryHandle->execute();

返回 TRUE 或 FALSE。但是如果插入成功,我想获得“user_id”的值。各位大佬能指点一下怎么做吗?谢谢。

【问题讨论】:

我确实尝试过首先使用 PDO::lastInsertID。但它只是返回空白值。因此,环顾四周发现上面的方式更干净。 【参考方案1】:

您是否尝试将命令视为选择返回,正在运行

$ret=$queryHandle->fetchAll();

【讨论】:

绝对有效! :) 但我希望有一种更直接/更干净的方式来做到这一点。可能是我要求太多了…… 没有更干净的方法,因为你有一个返回的数据。您必须获取它是微不足道的。 k.只是一件小事,我使用了 fetch() 而不是 fetchAll() ,因为它保证一次只有一个插入。【参考方案2】:
$ret = $queryHandle->fetchColumn();

将返回单个值而不是数组。

【讨论】:

如果你只想找回IDRETURNING id ...这是正确的方法

以上是关于在 PHP 中,当将 PDO 与 pgSQL 一起使用时,如何在原始 INSERT sql 查询中获取“RETURNING”子句的值的主要内容,如果未能解决你的问题,请参考以下文章

PHP下添加pdo_pgsql扩展

Php7安装pdo_pgsql,pgsql扩展

php5.5.7添加pgsql,pdo_pgsql,swoole

安装PHP扩展

yii链接postgresql

Linux 安装PHP扩展过程