Я вставляю данные в базу данных MySQL. В случае неудачи ввода я должен предоставить соответствующее сообщение об ошибке, указывающее на это. Согласно моему коду ниже, я буду Echo-ing
сообщением « Inserted
если вставка была успешной или неудачной.
То, что я хочу сделать, – это эхо-сообщение « Inserted
только тогда, когда вставка данных имеет успех, и возврат fail
выполняется, если он не выполняется. Как я могу изменить свой код, чтобы сделать это?
<?php mysql_connect("localhost", "root", "123") or die(mysql_error()); mysql_select_db("swm_database") or die(mysql_error()); mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")or die(mysql_error()); echo "Inserted"; ?>
$result = mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")); if($result) { echo "Success"; } else { echo "Error"; }
После запроса INSERT
вы можете использовать ROW_COUNT()
для проверки успешной операции вставки как:
SELECT IF(ROW_COUNT() = 1, "Insert Success", "Insert Failed") As status;
Согласно книге PHP и MySQL для динамических веб-сайтов (4-е издание)
Пример:
$r = mysqli_query($dbc, $q);
Для простых запросов, таких как INSERT , UPDATE , DELETE и т. Д. (Которые не возвращают записи), переменная-short для результата $r
будет равна TRUE или FALSE , в зависимости от успешного выполнения запроса.
Имейте в виду, что «выполнено успешно» означает, что он работал без ошибок; это не означает, что выполнение запроса обязательно имело желаемый результат; вам нужно будет это проверить.
Тогда как протестировать?
В то время как mysqli_num_rows()
возвращает количество строк, сгенерированных запросом SELECT , mysqli_affected_rows()
возвращает количество строк, на которые влияет запрос INSERT , UPDATE или DELETE . Он используется так:
$num = mysqli_affected_rows($dbc);
В отличие от mysqli_num_rows()
, единственным аргументом, который принимает функция, является соединение с базой данных ( $ dbc ), а не результаты предыдущего запроса ( $ r ).
if (mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")or die(mysql_error())) { echo 'Success'; } else { echo 'Fail'; }
Хотя, поскольку у вас есть or die(mysql_error())
он покажет mysql_error () на экране, когда он терпит неудачу. Вероятно, вы должны удалить это, если это не желаемый результат