нужно проверить, если SQL-запрос был успешным - PullRequest
17 голосов
/ 14 января 2010

У меня есть этот запрос, и если он возвращается успешно, я хочу, чтобы другая функция обрабатывала, если нет, не обрабатывайте эту функцию.

Вот код для выполнения запроса

global $DB;
$DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");

Я полагаю, это что-то вроде ...

if($DB) { 
    //success 
} else { 
    //failure 
}

Ответы [ 8 ]

29 голосов
/ 14 января 2010

Это самый простой способ проверить

$query = $DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");

if($query) // will return true if succefull else it will return false
{
// code here
}
7 голосов
/ 14 января 2010

mysql_affected_rows

Я понимаю, что, говоря "успешно", вы хотите знать, были ли обновлены какие-либо строки. Вы можете проверить это с помощью этой функции.

Если вы используете PDO -> http://www.php.net/manual/en/pdostatement.rowcount.php

2 голосов
/ 25 ноября 2012

если значение равно 0, то оно не было успешным, но если 1, то успешно.

$this->db->affected_rows();
2 голосов
/ 14 января 2010
if ($DB->rowCount() > 0)
   {/* Update worked because query affected X amount of rows. */}
else
    {$error = $DB->errorInfo();}
2 голосов
/ 14 января 2010
global $DB;
$status = $DB->query("UPDATE exp_members SET group_id = '$group_id' WHERE member_id = '$member_id'");

if($status == false)
{ 
    die("Didn't Update"); 
}

Если вы используете mysql_query в бэкэнде (что бы $DB->query() не использовало для запроса к базе данных), он вернет TRUE или FALSE для INSERT, UPDATE и DELETE ( и некоторые другие), команды, основанные на их статусе.

0 голосов
/ 23 февраля 2017

, если вы не используете формат ->, вы можете сделать это:

$a = "SQL command...";
if ($b = mysqli_query($con,$a)) {
  // results was successful
} else {
  // result was not successful
}
0 голосов
/ 21 апреля 2016

Для меня это самый безопасный механизм проверки на сбой при вставке или обновлении:

$result = $db->query(' ... ');
if ((gettype($result) == "object" && $result->num_rows == 0) || !$result) {
   failure 
}
0 голосов
/ 14 января 2010
if ($DB->query(...)) { success }
else { failure }

запрос должен вернуть false при ошибке (если вы используете mysql_query или $ mysqli-> query). Если вы хотите проверить, действительно ли запрос UPDATE что-то сделал (что совершенно не то, что «успешно»), используйте mysql_affered_rows или $ mysqli-> disabled_rows

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...