Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как правильно проверить что Insert в бд прошол нормально
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Как правильно проверить что Insert в бд прошол нормально

Страниц (1): [1]
 

1. Максим21 - 23 Сентября, 2010 - 15:43:52 - перейти к сообщению
Извиняюсь за легкий вопрос!
Но как правильно все таки написать?
2. SAD - 23 Сентября, 2010 - 15:47:46 - перейти к сообщению
$q = mysql_query("INSERT.....");
if($q)
echo 'все гуд';
3. Максим21 - 24 Сентября, 2010 - 18:50:26 - перейти к сообщению
SAD пишет:
$q = mysql_query("INSERT.....");
if($q)
echo 'все гуд';


Да так, не успев внести данные он сразу пишет гуд, потому мне и не понятно.
4. SAD - 24 Сентября, 2010 - 22:49:55 - перейти к сообщению
Он не вносит или вносит пустые значения?
5. garvey - 25 Сентября, 2010 - 06:56:51 - перейти к сообщению
mysql_insert_id();
Возвращает id записи, если она прошла успешно.
6. JustUserR - 25 Сентября, 2010 - 23:47:11 - перейти к сообщению
Максим21 пишет:
Да так, не успев внести данные он сразу пишет гуд, потому мне и не понятно.
При осущественни подачи SQL-запросов которые не производят определенной выборки информации или показа состояний переменных так как SELECT или SHOW - функция mysql_query всегда будет возвращать истинное значение и для проверки успешности реализуемого запроса необходимо применять характеризующие его средства - в частности если имеется поле автоинкремента то возможен просмотр параметра таблицы хранящий его значение
7. zardoz - 26 Сентября, 2010 - 01:13:49 - перейти к сообщению
Со своей стороны, предложил бы более универсальную команду - mysql_affected_rows().
Она покажет как число вставленных строк (при INSERT), так и число обновленных строк при UPDATE. Возвращает "-1" при ошибке.

С уважением.
8. JustUserR - 27 Сентября, 2010 - 00:54:09 - перейти к сообщению
zardoz пишет:
Со своей стороны, предложил бы более универсальную команду - mysql_affected_rows().
Предложенная вами функция mysql_affected_rows предоставляет информация по SQL-запросам содержащим операции изменения данных в таблице и в частности число прошедших модификацию строк - таким образом для унификации проверки правильности SQL-запросов в частности в собственном классе реализации работы с БД - возможно использовать гибридный подхов с применением данном функции и указанной выше методики одновременно
9. zardoz - 27 Сентября, 2010 - 23:58:30 - перейти к сообщению
Цитата:
mysql_affected_rows() возвращает количество рядов, затронутых последним INSERT, UPDATE, DELETE запросом к серверу, на который ссылается указатель link_identifier. Если ресурс не указан, функция использует последнее, успешное соединение, выполненное с помощью функции mysql_connect().
...
Если последний запрос был неудачным, функция вернёт -1.


JustUserR, вы думаете что может возникнуть ситуация когда mysql_affected_rows() не отработает ошибку, а mysql_insert_id() укажет на нее? Если нет, то зачем учитывать частный случай в контексте общего, создавая этот не нужный гибридный подход?

С уважением.
10. vlom - 26 Ноября, 2010 - 14:17:13 - перейти к сообщению
А почему бы не использовать вот такой запрос???
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         $result = mysql_query("INSERT INTO table SET title='$title'") or die(mysql_error());
  4.                 if ($result == true) {
  5.                         echo "<p>Новая запись успешно добавлена</p>";
  6.                 } else echo "<p>Произошла ошибка при добавлении новой записи</p>";
  7. ?>
  8.  

 

Powered by ExBB FM 1.0 RC1