【发布时间】:2016-09-24 18:49:11
【问题描述】:
我知道这是一个菜鸟问题,但是由于某种原因,我的更新语句总是返回 0 的行数,无论单行或多行是否因查询而发生更改。
使用标准 php 和 pdo 准备好的查询。测试了 select 语句,它们在返回 rowCount 数字时运行良好。但更新不多。这是我的代码。任何见解都会很棒。
$sql = "UPDATE token SET tokenkey = ? WHERE token_id = 1";
$r = $this->database->databaseConnections['core']->prepare($sql);
$r->setFetchMode(\PDO::FETCH_ASSOC);
$data = "123123";
$res = $r->execute(array($data));
echo $r->rowCount();
我使用了相同的代码(但使用了SELECT),它会产生大于 0 的结果。我更改数据变量,它执行,我签入 sql 数据库,它已成功更新。但是尽管我可以在 phpmyadmin 中看到更新的行,但行数仍然为 0,如果我直接在 phpmyadmin 中运行 sql,它会返回 1 个受影响的行。困惑。
我还检查了PDO 错误,但没有收到任何错误。
有关更多信息,我的 pdo 数据库连接器使用以下配置设置(忽略连接详细信息本身。
$connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$connection->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
$connection->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$connection->exec('SET NAMES utf8');
提前感谢您的帮助。
干杯,
马斯比
【问题讨论】:
-
为什么你的函数中有反斜杠?
SELECT不应产生 any 结果,因为rowCount()dooesn't work withSELECTstatements. -
您的
select声明是什么?我怀疑你的update声明 -
反斜杠,因为我在不同的命名空间中构建它
-
好的 - 我有一个相关的脑云。
-
Select 语句是 SELECT * FROM token WHERE tokenkey=?它产生了预期的结果 1
标签: php mysql database pdo rowcount