2010-01-13 2 views
12

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

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

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

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

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

Определите «успешный». Успешно, как в «бежать без ошибок», или успешно, как в «найденной записи с id $ member_id»? –

+1

Возможно, вы захотите использовать PDO вместо mysqli –

+3

@ d03boy Хотелось бы скомпенсировать этот комментарий. Вы не можете предположить, что он использует, поскольку он не упоминал об этом. Кроме того, были некоторые обсуждения PDO и MySQLi, и они оба имеют свои преимущества. Поэтому вы не можете просто сказать «Использовать PDO над MySQLi» –

ответ

22

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

$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 
} 
+3

ли это работает с Storeprocedures и PDO api для php? –

+3

Это вернет true, даже если будет затронута строка 0 - он вернет false только в случае ошибки в запросе, поэтому для UPDATE SQL я бы предложил mysql_affected_rows() –

7

mysql_affected_rows

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

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

+0

Точно, что мне нужно. –

+0

Это было удалено на php7. – GeneCode

0
if ($DB->query(...)) { success } 
else { failure } 

запрос должен возвращать ложна на провал (если вы используете mysql_query или $ mysqli-> запрос). Если вы хотите проверить, если запрос UPDATE на самом деле ничего (что совершенно другое, чем «успешно»), затем используйте mysql_affected_rows или $ mysqli-> affected_rows

1
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 (и несколько других) команд в зависимости от их статуса.

3
if ($DB->rowCount() > 0) 
    {/* Update worked because query affected X amount of rows. */} 
else 
    {$error = $DB->errorInfo();} 
2

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

$this->db->affected_rows(); 
0

Это доказала безопасный механизм для меня, чтобы проверить на неудачу при вставке или обновлении:

$result = $db->query(' ... '); 
if ((gettype($result) == "object" && $result->num_rows == 0) || !$result) { 
    failure 
} 
0

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

$a = "SQL command..."; 
if ($b = mysqli_query($con,$a)) { 
    // results was successful 
} else { 
    // result was not successful 
} 
Смежные вопросы