【发布时间】:2012-11-24 17:02:41
【问题描述】:
我正在使用 PDO 运行插入查询,然后使用 lastInsertId() 获取新创建的 Id。这一切都在我的本地主机环境中运行。
当我将完全相同的代码移动到服务器上时,lastInsertId() 总是返回空白,即使插入语句有效并将新行插入数据库。这会是我的配置中的设置吗?任何帮助表示赞赏。
$insertstmt = $dbinsert->prepare($insertsql);
// bindParams ...
$insertstmt->execute();
// always blank
$id = $dbinsert->lastInsertId();
$dbinsert = null;
【问题讨论】:
-
定义
blank。没有blank数据类型,所以我假设您的意思是''、0、false、null之一。使用var_export或var_dump来确定你得到哪一个。提及您正在使用的数据库后端(以及哪个版本)也可能会有所帮助。 -
空白如''。 var_export 和 var_dump 也都返回 '' 。我正在使用 dblib 连接到 SQL Server 数据库。
-
var_dump('')输出string(0) "",所以你绝对确定这就是你在 ID 中得到的,而不是你的代码不符合你的假设或发生了以某种方式被静音的错误?如果在最后一行之前添加echo "foo"; var_dump($id); echo "bar";,会得到什么输出? -
我明白了。我分离出那部分代码,以便我可以正确测试它。 $id 输出'',var_dump 输出'bool(false)',var_export 输出'false'
-
这一切似乎告诉我新插入的记录没有被返回。这个问题是由服务器上不同版本的 PDO 或 dlib 引起的吗?是否需要在 php 中进行任何配置才能使其工作?
标签: php sql-server pdo