Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обновление базы - нужен ли предварительный поиск?
 
 автор: gOFREe   (29.09.2009 в 20:56)   письмо автору
 
 

Правильная такая конструкция? или можно все сделать в один запрос? и как?
Смысл такой, при добавлении в базу записи проверяется id, если такой id уже есть, то kol увеличиваем на 1

$result = "SELECT id FROM `table` WHERE id = '".$_POST['id']."'"; 
    if(mysql_num_rows($result) > 0) {
    $result = "UPDATE `table` SET kol = kol+1 WHERE id = '".$_POST['id']."'";    
    }

  Ответить  
 
 автор: cheops   (29.09.2009 в 21:00)   письмо автору
 
   для: gOFREe   (29.09.2009 в 20:56)
 

Собственно SELECT-запрос можно не выполнять - если id из конструкции WHERE UPDATE-запроса нет в базе данных, следовательно, и записей никаких изменено не будет. В этом случае ошибка не возвращается - запрос отрабатывает штатно.

  Ответить  
 
 автор: gOFREe   (29.09.2009 в 21:15)   письмо автору
 
   для: cheops   (29.09.2009 в 21:00)
 

Ааа, ясно, т.е. просто пишем
 $result = "UPDATE `table` SET kol = kol+1 WHERE id = '".$_POST['id']."'"; 

А как узнать, выполнен ли запрос или нет?
Я так понимаю конструкция

if (!$result) {
 
}

Здесь не поможет.

  Ответить  
 
 автор: cheops   (29.09.2009 в 21:19)   письмо автору
 
   для: gOFREe   (29.09.2009 в 21:15)
 

Есть специальная функция mysql_affected_rows() - она как раз возвращает количество затронутых запросом записей.

  Ответить  
 
 автор: gOFREe   (29.09.2009 в 21:25)   письмо автору
 
   для: cheops   (29.09.2009 в 21:19)
 

Так правильно?
 $result = "UPDATE `table` SET kol = kol+1 WHERE id = '".$_POST['id']."'"; 
if (mysql_affected_rows() > 0) {
      echo "Запрос выполнен";

else {
      echo "Запрос не выполнен";
}

  Ответить  
 
 автор: cheops   (29.09.2009 в 21:26)   письмо автору
 
   для: gOFREe   (29.09.2009 в 21:25)
 

Да, совершенно, верно.

  Ответить  
 
 автор: gOFREe   (29.09.2009 в 21:27)   письмо автору
 
   для: cheops   (29.09.2009 в 21:26)
 

Огромное спасибо!

  Ответить  
 
 автор: Trianon   (29.09.2009 в 22:16)   письмо автору
 
   для: gOFREe   (29.09.2009 в 21:25)
 

Запрос может быть успешно выполнен, но при этом не отобрать ни одной записи.
В общем (не Вашем) случае, запрос даже может отобрать запись, но при присваивании - не изменить в ней ни одно поле.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования