Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 26 Май, 2012, 01:31:01

Страниц: [1]
Печать
Автор Тема: 3 DELETE в 1  (Прочитано 1157 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Professor    ↓ 
21 Март, 2009, 09:31:40
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

Text
  $dell=explode("|",$_POST['dell']);
 
   foreach($dell as $var)
   {
           $var=(int)$var;
           mysql_query("DELETE FROM page WHERE id={$var} ");
           mysql_query("DELETE FROM images WHERE id_page={$var} ");
           mysql_query("DELETE FROM file WHERE id_page={$var} ");
 
   }
 
Как их в 1 запрос обьединить?
Не получилось так
Text
mysql_query("DELETE FROM page INNER JOIN images ON page.id=images.id_page WHERE page.id={$var} ");
и так
Text
mysql_query("DELETE FROM page, images WHERE page.id={$var} AND images.id_page={$var} ");
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
CTAPbIu_MABP    ↓ 
21 Март, 2009, 11:14:59 , спустя 1 час 43 минуты 19 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

никак
 
можешь тригеры повесить и будет каскадное удаление
можешь хранимую процедуру сделать
Записан

java.lang.OutOfMemoryError
phpdude    ↓ 
22 Март, 2009, 07:06:21 , спустя 7 часов 51 минуту 22 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

во первых.
 
Text
DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id=t2.id AND t2.id=t3.id;
 
во вторых
 
PHP
   $dell=explode("|",$_POST['dell']);
 
   [b]foreach[/b]($dell as $var)
   {
           $var=(int)$var;
           mysql_query("DELETE FROM page WHERE id={$var} ");
           mysql_query("DELETE FROM images WHERE id_page={$var} ");
           mysql_query("DELETE FROM file WHERE id_page={$var} ");
 
   }
 

чо за хуйня?
 
WHERE id IN (1,4,5,6,8,7) слабо сделать то?
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Professor    ↓ 
22 Март, 2009, 09:41:57 , спустя 2 часа 35 минут 36 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

Действительно х*ня =)
 
PHP

$i=0;
foreach($dell as $var)
 {
     $var=(int)$var;
     $list_id.=$i==0?$var:",".$var;
     $i=1;
 }
mysql_query("DELETE FROM page, images USING page INNER JOIN images INNER JOIN file WHERE page.id=images.id_page AND images.id_page=file.id_page AND page.id IN ({$list_id})");
Всеравно не удаляет =(
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
phpdude    ↓ 
22 Март, 2009, 09:57:58 , спустя 16 минут 1 секунду
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20793
Сила слова: 1.66

ты моск пропил с той девушкой на аве?))))))))))))))))
 
Text

$dell=explode("|",$_POST['dell']);
$i=0;
foreach($dell as $var)
 {
           $var=(int)$var;
           $list_id.=$i==0?$var:",".$var;
           $i=1;
 }

думай думай сука думай!!!!
PHP
$dell=str_replace("|",",",$_POST['dell']);
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Professor    ↓ 
22 Март, 2009, 10:27:20 , спустя 29 минут 22 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

думай думай сука думай!!!!

мде... =)
 
чет второй раз и опять х*ня =)
 
а если там что нитьопасное будет, как проверить?
20|30|тут удаление всей базы данных|44|
« Последнее редактирование: 22 Март, 2009, 10:31:17 от Professor » Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
phpdude    ↓ 
22 Март, 2009, 10:55:43 , спустя 28 минут 23 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20793
Сила слова: 1.66

Professor,
PHP
$del = join(',',array_map("mysql_real_escape_string",explode("|",$_POST['del'])));

нечто такое
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Professor    ↓ 
22 Март, 2009, 11:23:24 , спустя 27 минут 41 секунду
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

А может просто
Text
$dell=str_replace("|",",",mysql_real_escape_string($_POST['del']));
такое будет норм работать?
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
CTAPbIu_MABP    ↓ 
22 Март, 2009, 12:04:42 , спустя 41 минуту 18 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

Professor, двухмерный массив не пройдет
Записан

java.lang.OutOfMemoryError
Professor    ↓ 
22 Март, 2009, 12:17:06 , спустя 12 минут 24 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

там же не двухмерный массив.
там строка приходит
PHP

 $_POST['del']="20|30|тут удаление всей базы данных|44|";
 $dell=str_replace("|",",",mysql_real_escape_string($_POST['del']));
 $dell.="-1";
 

Защитит ли это от удаления всей базы?
 
или всетаки так делать?
PHP
$dell=explode("|",$_POST['dell']);
$i=0;
foreach($dell as $var)
 {
           $var=(int)$var;
           $list_id.=$i==0?$var:",".$var;
           $i=1;
 }

потому что так
PHP
$del = join(',',array_map("mysql_real_escape_string",explode("|",$_POST['del'])));
мне кажется хуже в данном случае
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
AlexB    ↓ 
22 Март, 2009, 12:24:15 , спустя 7 минут 9 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3428
Сила слова: 2.6

А нафига постом слать какую-то изощренную строку, че массив не прислать?
 
И нафига нужны джоины в DELETE? Извращение! Три запроса куда более нормальное решение, только их надо в транзакцию засунуть.
« Последнее редактирование: 22 Март, 2009, 12:26:38 от AlexB » Записан

phpdude    ↓ 
22 Март, 2009, 12:57:52 , спустя 33 минуты 37 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20793
Сила слова: 1.66

Professor, я идиот! конечно
 
$dell=str_replace("|",",",mysql_real_escape_string($_POST['del']));
 
))))))))))
 
просто ты весь моск выклевал говнокодом вот и я начал говномыслить))
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
phpdude    ↓ 
22 Март, 2009, 12:58:07 , спустя 15 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

AlexB, не пугай детей транзакциями
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Professor    ↓ 
22 Март, 2009, 01:06:59 , спустя 8 минут 52 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

AlexB, не пугай детей транзакциями
Это да =)
 
А нафига постом слать какую-то изощренную строку, че массив не прислать?
Я jquery собираю все активные checkbox и удаляю эти строки.
Можно конечно через json, но тк проще.
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
AlexB    ↓ 
22 Март, 2009, 01:29:29 , спустя 22 минуты 30 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3428
Сила слова: 2.6


AlexB, не пугай детей транзакциями
Ну во первых, ничего такого страшного в транзакциях нет, как раз ИМХО достаточно понятный механизм и не сложная реализация.
 
Во вторых, транзакции это так, совсем по хорошему ... краями можно и забить ... я знаю множество систем которые годами работали с тами последовательными делитами и проблем не возникало ... тут все зависит от того насколько паронаидальны требования к надежности.
Записан

Страниц: [1]
Печать
 

Перейти в: