времени для маленькой тайны: Я получил этот запрос:PDO: Обновление не работает, ошибки нет
$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/Database говорит, что все сработало, но оно didnt!
Я расстроен как ад и буду благодарен за каждый намек! Спасибо!
UPDATE:
echo "\nPostID: $postID | oldID: $oldCatID ".
"| newID: $newCatID | rowCount: $rowCount\n<br/>\n";
в outputed значения являются правильными, $rowCount
является 1:
PostID: 5432 | oldID: 3 | newID: 32 | rowCount: 1
PostID: 5435 | oldID: 3 | newID: 8 | rowCount: 1
Вы уверены, что запрос не обновлен? Возможно, он обновляется с одинаковым значением. – Mihai
@Mihai, к сожалению, я уверен, см. Сообщение обновления. – desperateCoder
Соответствует ли postID ожидаемой строке? Попробуйте удалить проверку на совпадение oldID. Вероятно, это не требуется. – Anthony