Вставьте данные в базу данных MySql и покажите, будет ли вставка успешной или неудачной

Я вставляю данные в базу данных 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 () на экране, когда он терпит неудачу. Вероятно, вы должны удалить это, если это не желаемый результат