$ wpdb - что он возвращает при сбое? - PullRequest
11 голосов
/ 30 июня 2011

Я не уверен, является ли этот вопрос специфичным для WordPress или больше связан с mySQL.Я пытаюсь выяснить, что будет возвращено в случае сбоя транзакции с базой данных.В следующем сценарии я обновляю строку.Если ни одно из значений не изменено, возвращается false.Если изменения сделаны, возвращается.Как узнать, произошла ли транзакция?

$result = $wpdb->update($this->table_name, $dbfields, $where);
if($result == false)//do fail - this is not really a fail!
if($result == true)//do success

Любые указатели оценены.

1 Ответ

37 голосов
/ 30 июня 2011

Взгляните на wp-includes\wp-db.php. Комментарий заголовка функции обновления wpdb гласит:

 * @return int|false The number of rows updated, or false on error.

Итак, я подозреваю, что вы хотите найти разницу между false (логическое значение, указывающее сбой) и 0 (целое число, указывающее, что строки не были возвращены.)

Если сравнивать, используя ==, false и 0 равны. Поэтому вам нужно использовать оператор ===, чтобы проверить, имеете ли вы дело с логическим значением false или целым числом 0.

Итак, попробуйте это:

if ($result === false) // Fail -- the "===" operator compares type as well as value
if ($result === 0) // Success, but no rows were updated
if ($result > 0) // Success, and updates were done. $result is the number of affected rows.

См. руководство по PHP для получения дополнительной информации об операторе сравнения ===.

...