|
|
|
| Правильная такая конструкция? или можно все сделать в один запрос? и как?
Смысл такой, при добавлении в базу записи проверяется 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']."'";
}
|
| |
|
|
|
|
|
|
|
для: gOFREe
(29.09.2009 в 20:56)
| | Собственно SELECT-запрос можно не выполнять - если id из конструкции WHERE UPDATE-запроса нет в базе данных, следовательно, и записей никаких изменено не будет. В этом случае ошибка не возвращается - запрос отрабатывает штатно. | |
|
|
|
|
|
|
|
для: cheops
(29.09.2009 в 21:00)
| | Ааа, ясно, т.е. просто пишем
$result = "UPDATE `table` SET kol = kol+1 WHERE id = '".$_POST['id']."'";
|
А как узнать, выполнен ли запрос или нет?
Я так понимаю конструкция
Здесь не поможет. | |
|
|
|
|
|
|
|
для: gOFREe
(29.09.2009 в 21:15)
| | Есть специальная функция mysql_affected_rows() - она как раз возвращает количество затронутых запросом записей. | |
|
|
|
|
|
|
|
для: 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 "Запрос не выполнен";
}
|
| |
|
|
|
|
|
|
|
для: gOFREe
(29.09.2009 в 21:25)
| | Да, совершенно, верно. | |
|
|
|
|
|
|
|
для: cheops
(29.09.2009 в 21:26)
| | Огромное спасибо! | |
|
|
|
|
|
|
|
для: gOFREe
(29.09.2009 в 21:25)
| | Запрос может быть успешно выполнен, но при этом не отобрать ни одной записи.
В общем (не Вашем) случае, запрос даже может отобрать запись, но при присваивании - не изменить в ней ни одно поле. | |
|
|
|