【发布时间】:2013-11-08 23:13:24
【问题描述】:
时间有点神秘: 我得到了这个查询:
$stmt = 'update wp_term_relationships set term_taxonomy_id = :newID '.
'where term_taxonomy_id= :oldID and object_id = :postID';
self::$stmtSetNewID = self::$dataBase->prepareStatement($stmt);
[...]
self::$stmtSetNewID->bindParam(':oldID', $oldCatID, PDO::PARAM_INT);
self::$stmtSetNewID->bindParam(':newID', $newCatID, PDO::PARAM_INT);
self::$stmtSetNewID->bindParam(':postID', $postID, PDO::PARAM_INT);
$result = self::$stmtSetNewID->execute();
$rowCount = self::$stmtSetNewID->rowCount();
echo $rowCount;
我尝试设置错误级别
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
并输出一个可能的错误
var_dump(self::$stmtSetNewID->errorInfo());
并输出受影响的行数(在上面代码的末尾)。
没有错误,没有警告,什么都没有。 rowCount() 返回 1,但数据库中的值保持不变。
对我来说,看起来 PDO / 数据库说一切正常,但它没有!
我非常沮丧,我会感激每一个提示!谢谢!
更新:
echo "\nPostID: $postID | oldID: $oldCatID ".
"| newID: $newCatID | rowCount: $rowCount\n<br/>\n";
输出的值是正确的,$rowCount是1:
PostID: 5432 | oldID: 3 | newID: 32 | rowCount: 1
PostID: 5435 | oldID: 3 | newID: 8 | rowCount: 1
【问题讨论】:
-
您确定查询没有更新吗?也许它更新为相同的值。
-
@Mihai 很遗憾,我确定,请参阅帖子更新。
-
postID 是否与预期的行匹配?尝试删除 oldID 匹配检查。可能不需要。
-
@Anthony 当我使用 phpMyAdmin 中的输出值执行查询时,一切正常。所以是的,它确实匹配。否则它不会告诉我 rowCount 为 1,对吧?
-
基本调试硬编码变量
标签: php mysql sql wordpress pdo