2013-06-14 4 views
-5

Может кто-нибудь, пожалуйста, скажите мне, каковы все возможности возвращаемых значений для @mysql_affected_rows. Потому что я проверяю if(@mysql_affected_rows()). В большинстве случаев он возвращает 1 (sucess) или 0 (не sucess). Так оно и работало правильно. Но в некоторых случаях он возвращает некоторое значение, отличное от 0, если не успех при обновлении.Возможные значения @mysql_affected_rows возвращают значения?

Я не знаю, что он возвращает. Но он входит в цикл. Внутри цикла я пытаюсь вставить данные. Но на это указывает ошибка дублирования SQL. Для справки проверить код, приведенный ниже, пожалуйста,

$sqlU = sprintf("UPDATE %s SET count = count + 1 
          WHERE id = %d", 'table', 123); 
mysql_query($sqlU); 
if([email protected]_affected_rows()) { 
    $sqlI = sprintf("INSERT INTO %s (id) VALUES (%d)", 
           'table', 123); 
    mysql_query($sqlI); 
} 
+0

почему вы используете как 'если это (! @ Mysql_affected_rows()) {'? –

+0

Документация PHP говорит вам, что она возвращает количество затронутых строк или -1 при неудаче. Не так сложно получить информацию, не спрашивая о SO. С другой стороны, вы используете устаревший способ обработки связи с базой данных, а также не проверяете, выполняется ли ваш запрос или нет - в основном слишком много плохих вещей происходит в вашем коде. Вы должны изучить PDO. –

+0

Ваш код также не имеет смысла. Почему 'UPDATE' строка и потом' INSERT' тот же самый снова? – ferdynator

ответ

2

Во-первых, mysql_* функции устарели. mysql_affected_rows(), кажется, возвращает целое число во всех случаях. Он возвращает -1, если запрос завершился неудачно.

Что вам действительно нужно, а не mysql_affected_rows() - это правильный запрос, который не открыт для условий гонки.

INSERT INTO table (id, count) VALUES (123, 0) ON DUPLICATE KEY UPDATE count = count + 1

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