Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Доброго времени суток!
Столкнулся с проблемой. Если есть в таблице запись, надо сделать UPDATE, если записи нет INSERT INTO. В интернете рекомендвали такое решение, но на моей машине всегда выводится UPDATE, т.е. решение не работает.
$sql = "SELECT * "; $sql .= "FROM plugins_list "; $sql .= "WHERE short_name = '".$_POST['short_name']."' "; $query = mysql_query($sql); if(!$query) { echo INSERT INTO; } else { echo UPDATE; }
Кто-то может подсказать как решить эту задачу?
Неактивен
Вопросы по PHP следует задавать на http://webew.ru
P.S. Подсказка - что возвращает функция mysql_query() и как это связано с кол-вом строк в выборке?
P.P.S. Возможно для решения вашей задачи подойдет INSERT ... ON DUPLICATE KEY UPDATE или REPLACE
Неактивен
Вопросы по PHP следует задавать на http://webew.ru
Спасибо за рекомендацию! Думал, что тут найдутся и РНР специалисты, поэтому решил спросить именно на этом форуме + существует вероятность того, что подскажут альтернативное решение средствами самого MySQL (именно этот случай).
P.S. Подсказка - что возвращает функция mysql_query() и как это связано с кол-вом строк в выборке?
Если запрос не находит записей, то mysql_query() возвращает false, если же находит, то возвращается результат запроса. Но на локальной машине пробовал писать условие:
if($query == false) { ... }
Резултат тоже неадекватный (или интерпретатор любой результат запроса воспринимает как false, или наоборот, за не false - не помню какой вариант именно, но вообщем при любом запросе воспринимает его результат одинаково).
P.P.S. Возможно для решения вашей задачи подойдет INSERT ... ON DUPLICATE KEY UPDATE или REPLACE
Vasya, спасибо за подсказку! Именно INSERT ... ON DUPLICATE KEY UPDATE решил мою проблему!
P.S. Мало ли кто столкнётся с моей проблемой, решение такое (заместо кода в первом сообщении):
$sql = "INSERT INTO plugins_list "; $sql .= "SET short_name = '".$_POST['short_name']."', "; $sql .= "is_active = 1 "; $sql .= "ON DUPLICATE KEY UPDATE "; $sql .= "short_name = '".$_POST['short_name']."', "; $sql .= "is_active = 1 "; $query = mysql_query($sql);
Спасибо ещё раз, и хорошего тебе дня!
Отредактированно Boron1987 (23.11.2009 13:27:31)
Неактивен
Boron1987 написал:
P.S. Подсказка - что возвращает функция mysql_query() и как это связано с кол-вом строк в выборке?
Если запрос не находит записей, то mysql_query() возвращает false, если же находит, то возвращается результат запроса.
http://www.php.su/functions/?mysql-query
Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни одного ряда.
Неактивен
Страниц: 1