agentor
9.09.2009 - 00:22
собственно у меня возник такой вопрос по ходу написания одной функции.
Возможно ли сделать удаление данных одним запросом не исползуя множество как на примере
PHP |
mysql_query("DELETE FROM user WHERE id=".sqlesc($usrd["id"]).""); mysql_query("DELETE FROM user_freunde WHERE u1=".sqlesc($usrd["id"])." OR u2=".sqlesc($usrd["id"]).""); mysql_query("DELETE FROM blogs WHERE user=".sqlesc($usrd["id"]).""); mysql_query("DELETE FROM blogs_data WHERE user=".sqlesc($usrd["id"]).""); mysql_query("DELETE FROM blogs_kommentare WHERE user=".sqlesc($usrd["id"]).""); @unlink("fotos/a_".sqlesc($usrd["id"])."_b.jpg"); |
я тут немного подумал и решил написат вам знатокам и показать пример удаления.
Как можно сделать что то подобии для полноценной работы
PHP |
foreach(explode(".","user.user_fotos.gaestebuch.fotos_kommentare.fotos_alben.wermachtwas.user_freunde") as $x) foreach(explode(".","id.user.user.user.user.user.userid") as $where) mysql_query("DELETE LOW_PRIORITY FROM ".$x." WHERE ".$where." = ".sqlesc($usrd["id"])."")or die("Error 1"); @unlink("fotos/a_".sqlesc($usrd["id"])."_b.jpg"); |
Принцип:
Переменная
$x указывает какая база т.е к примеру
usersПеременная
$where указывает при каком результате т.е к примеру
WHERE user= 235 Спустя 1 час, 2 минуты, 57 секунд (9.09.2009 - 00:25) Alchemist написал(а):
сделать можно.
соединяй таблицы обычными JOIN'ами только в начале в отличие от простого удаления укажи из каких именно таблиц удалять данные.
Пример:
PHP |
DELETE table_a.*, table_b.* FROM `table_a` INNER JOIN `table_b` ON (table_a.id = table_b.id) LEFT JOIN `table_c` ON (table_a.name = table_c.name) WHERE table_a.expire < NOW() OR table_c.user = {USER_ID} |
Тут удалятся соответствующие строки в таблицах table_a и table_b, но не в table_c, хотя она тоже участвует в JOIN'е и даже в WHERE.
Спустя 18 часов, 29 минут, 51 секунда (9.09.2009 - 18:55) agentor написал(а):
да но как быть если WHERE разные?
Спустя 2 часа, 35 минут, 52 секунды (9.09.2009 - 21:31) sergeiss написал(а):
Понял, что был не прав, удалил свой ответ
Спустя 3 минуты, 41 секунда (9.09.2009 - 21:35) kirik написал(а):
На сколько я понимаю, грамотнее всего воспользоваться
внешними ключами.