2013-11-08 4 views
-1

времени для маленькой тайны: Я получил этот запрос: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 
+1

Вы уверены, что запрос не обновлен? Возможно, он обновляется с одинаковым значением. – Mihai

+0

@Mihai, к сожалению, я уверен, см. Сообщение обновления. – desperateCoder

+0

Соответствует ли postID ожидаемой строке? Попробуйте удалить проверку на совпадение oldID. Вероятно, это не требуется. – Anthony

ответ

0

Ok ребята, получили его. Извините за то, что потратил свое время на мою глупость. Как говорит сценарий, обновления выполнялись без ошибок. Но я обновил сообщение после этого в моем скрипте, и это обновление переписало мою новую категорию.

Смежные вопросы