строки, затронутые в обновлении mysql с помощью PHP

Как узнать, успешно ли мое обновление или нет? i update using where uniqueName = name, поэтому я должен всегда обновлять только 0 строк или 1. Что является хорошим способом проверить, обновил ли я строку или нет?

Solutions Collecting From Web of "строки, затронутые в обновлении mysql с помощью PHP"

mysql_affected_rows() вернет количество строк, затронутых вашим обновлением.

http://us.php.net/manual/en/function.mysql-affected-rows.php

На самом деле нет способа узнать это. Скажем, таблица tbl_numbers (id, value) имеет строки (1, «один») и (2, «два»);

 $result1="update tbl_numbers set value='first' where id=1"; 

Если вы проверяете $ result1 в условии if, он возвращает true, а mysql_affected_rows () возвращает 1.

Однако для $result2="update tbl_numbers set value='two' where id=2"; Если вы проверяете $ result2 в условии if, он возвращает true, а mysql_affected_rows () возвращает 0.

И, для $result3="update tbl_numbers set value='three' where id=3"; Если вы проверяете $ result3 в условии if, он возвращает true, а mysql_affected_rows () возвращает 0.

Используйте mysql_affected_rows .

попробуйте использовать mysql_affected_rows ([$ link])

Итак, что, если пользователь повторно передает данные, которые уже совпадают с информацией в БД? Если используется память, это приведет к возврату mysql_affected_rows () со значением 0, потому что по определению в этом процессе не было обновлено ни одной строки. Однако сам запрос был успешным.

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

 $result = mysql_query($q); if( mysql_affected_rows() == 0 ) $state = $result ? "Success" : "Fail"; 

Таким образом, вы можете проверить, были ли строки обновлены, и если вы не можете проверить, была ли это неисправность или просто повторить данные.

если ваш запрос на обновление находится в переменной с именем $ query, вы можете сделать это;

 $result = mysql_query($query); if($result){ //succes! } else { //fail! } 

Надеюсь это поможет. Если вы просто хотите знать, был ли ваш запрос выполнен успешно, это будет сделано. Если вы действительно хотите знать, сколько строк затронуто, используйте другие предложения.

Я очень опаздываю здесь, но вы всегда можете заставить неудачу не совпадать, изменив ваш запрос.

Для таблицы 'foo' с идентификаторами столбцов '' и 'value'. Выражение соответствия: ID = 4

 update foo join (select ID as nearID, ID = 4 as matched from foo order by matched desc limit 0, 1) as t on nearID = ID set value='somedata2' , ID = if(matched, nearID, 'nomatch') 

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

mysql_affected_rows ($ link) является правильным, но обесценивается .. mysqli_affected_rows ($ link) следует использовать сейчас.

http://php.net/manual/en/function.mysql-affected-rows.php

При использовании PDO затронутые строки могут быть получены с помощью функции rowCount (), как показано ниже:

 /* Delete all rows from the FRUIT table */ $del = $dbh->prepare('DELETE FROM fruit'); $del->execute(); /* Return number of rows that were deleted */ print("Return number of rows that were deleted:\n"); $count = $del->rowCount(); print("Deleted $count rows.\n"); 

Если вы используете подготовленный отчет ..

 //query $stmt = $conn->prepare("UPDATE user SET name = 'Jack' WHERE id = ?"); //bind parameters $stmt->bind_param("i", $id); //execute $stmt->execute(); //updated row count echo $stmt->affected_rows; echo " rows updated";