[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: update, но только если таблица существует.
Alex VoDevil
Нужно выполнить запрос UPDATE sometable SET var = '0' WHERE(something), но таблицы sometable может и не быть - в таком случае произойдет ошибка. Моя задача - сделать все тихо: Если есть таблица - обновить данные, нет таблицы - просто ничего не делать, но об ошибках не вещать (если ошибка была - то php класс ее покажет, а редактировать его не желательно). Как сделать это правильно одним запросом? Задача, догадываюсь, тривиальная, но гугл ничего внятного не говорит...



Спустя 19 минут, 1 секунда (5.02.2010 - 22:30) Winston написал(а):
Ну как - то так if isset таблица update else не обновлять.
Цитата (Alex VoDevil @ 5.02.2010 - 22:11)
но об ошибках не вещать

Поставь собаку чтобы не выпускала ошибку на показ.

Спустя 1 час, 24 минуты, 39 секунд (5.02.2010 - 23:55) Ice написал(а):
Просто создай хранимку, типа такой:
DELIMITER $$

CREATE PROCEDURE `db`.`proc_name` (IN var INT,
IN smth INT)
BEGIN
IF EXISTS (SELECT id FROM db.sometable WHERE id=0)
THEN UPDATE sometable SET `a`=var WHERE `b`=smth;
END IF;
END $$

DELIMITER ;


а где надо, - просто вызови ее:

$sql = "CALL `proc_name`";
mysql_query($sql);


И безопасность))) - обновляется? обновляется. А кааак уж обновляется, это, извините, вас, как говорится, не касается smile.gif

Спустя 2 минуты, 54 секунды (5.02.2010 - 23:57) Alex VoDevil написал(а):
Штука в том что есть класс db. Есть куча кода которая использует этот класс, так что редактировать его нельзя, как минимум не желательно. А ошибки он обрабатывает внутри себя. Есть ошибка - echo ее без всяких разборок и опций (на собаку не посмотрит)! Буферизацию вывода тоже не предлогайте - чалмы нет wink.gif Нужно обойтись языком sql. Вопрос по сути сводится к тому как одним запросом проверить существует ли таблица, и если существует то выполнить update?

p.s. Забыл сказать, речь идет о mysql5


_____________
Улыбайтесь, это всех раздражает.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.