|
|
|
|
|
для: cheops
(05.02.2011 в 19:27)
| | Вы меня посвятили в данном вопросе. Благодарю Вас. | |
|
|
|
|
|
|
|
для: Trianon
(05.02.2011 в 19:19)
| | Да, это самый оптимальный вариант.
Благодарю Вас. | |
|
|
|
|
|
|
|
для: Filatov_Aleksey
(05.02.2011 в 19:14)
| | Дело в том, что mysql_query() при выполнении запросов UPDATE, DELETE, DROP возврщает TRUE или FALSE, а не дескриптор результирующей таблицы (которой нет). Собственно функция mysql_affected_rows() и не принимает в качестве параметра дескритор результирующей таблицы, она принимает дескриптор соединения, которое возвращает фукнция mysql_connect(). Поэтому после всех запросов выполнять три подряд mysql_affected_rows() не получится - нужно функцию применять сразу. | |
|
|
|
|
|
|
|
для: Filatov_Aleksey
(05.02.2011 в 19:14)
| |
<?
mysql_query($sql1) or die("error in $sql1 : ".mysql_error());
$a1 = mysql_affected_rows();
mysql_query($sql2) or die("error in $sql2 : ".mysql_error());
$a2 = mysql_affected_rows();
mysql_query($sql3) or die("error in $sql3 : ".mysql_error());
$a3 = mysql_affected_rows();
if($a1 && $a2 && $a3)
echo "каждый из запросов внес изменения в БД";
|
| |
|
|
|
|
|
|
|
для: cheops
(05.02.2011 в 17:26)
| | Для проверки на ошибки запроса я использую or die:
<?php
$myrow_del_spec = mysql_query("DELETE FROM DocSpec WHERE doc = ".$id,$db) or die ("<br>При выполнении запроса к БД возникла ошибка: ".mysql_error().". Код ошибки: ".mysql_errno().". ");
?>
Вопрос несколько в другом, нужно узнать внесены ли изменения в по запросам, т.е. например при delete - сколько записей затронуто запросом?
Нужно это сделать для нескольких запросов одновременно. В документации есть функция mysql_affected_rows() как раз для этих целей, она работает "без матюка" только при использовании её без параметров - по последнему запросу, но мне такой вариант не подходит, тогда придётся писать if для каждого запроса, т.е.
<?php
if(mysql_affected_rows()) {
второй запрос
if(mysql_affected_rows()) {
//третий запрос
}
}
?> | |
|
|
|
|
|
|
|
для: Filatov_Aleksey
(05.02.2011 в 17:23)
| | Добавьте проверки после mysql_query() - они все корректно выполняются?
<?php
if(!$myrow_doc) exit("Ошибка - ".mysql_error());
if(!$myrow_del_spec) exit("Ошибка - ".mysql_error());
if(!$myrow_ins_spec) exit("Ошибка - ".mysql_error());
?>
|
PS Вообще такую проверку лучше всегда делать, даже если у вас SQL-запрос не динамически формируется - много времени на отладке экономится. MySQL и PHP - разные системы и PHP не сообщает о проблемах на стороне MySQL, если не приложить к этому усилия. | |
|
|
|
|
|
|
| Здравтсвуйте. Возникла проблема с функцией mysql_affected_rows().
Я делаю несколько SQL запросов (MySQL) на обновление, удаление и вставки.
$myrow_doc = mysql_query("UPDATE doctors SET f='".$f."', i='".$i."', o='".$o."'......
$myrow_del_spec = mysql_query("DELETE FROM DocSpec WHERE doc = ".$id....
$myrow_ins_spec = mysql_query("INSERT INTO DocSpec (Doc, Spec) VALUES....
if (mysql_affected_rows($myrow_doc) and mysql_affected_rows($myrow_del_spec) mysql_affected_rows($myrow_inc_spec) ) { echo "Запросы прошли";}
В официальной документации пишут: int mysql_affected_rows ( [resource link_identifier] )
Если в функции mysql_affected_rows не указывать ресурс, то возвращает результат последнего запроса, если указываю параметр, то выдаёт предупреждение: Warning: mysql_affected_rows() expects parameter 1 to be resource.
В Чём может быть проблема? | |
|
|
|
|