2012-01-22 3 views
0

Я пытаюсь найти решение для удаления нескольких строк с помощью подготовленного оператора PHP mysqli. В настоящий момент мой код удаляет записи из одной таблицы. Какова будет структура для удаления строк из нескольких таблиц?Удалить mysqli php подготовленный оператор sql

Вот пример моего кода:

`$sql ='DELETE FROM itm_pic_detail WHERE itm_pic_detail.id = ?';` 

Как бы написать следующий синтаксис:

DELETE FROM itm_pic_detail, itm_details, itm_ref, itm_value WHERE itm_pic_detail.id = ?, itm_details.id =?, item_ref.desc_id = ?, itm_ref.id = ?

+1

используйте 'AND' вместо запятых и добавьте информацию о присоединении таблицы к условию' USING' или 'WHERE'. http://dev.mysql.com/doc/refman/5.1/en/delete.html – cmbuckley

ответ

0

Что бы структуру для удаления строк из нескольких таблиц?

Если таблицы не имеют отношений - вы просто выполняете несколько запросов DELETE. Там нет ничего плохого в том, чтобы выполнить 2 запросов на удаление строк из 2 разных таблиц

+0

Все они имеют один и тот же идентификатор, таким образом, они связаны. Они не являются индексированными или внешними ключами. Я просто хотел использовать самый динамичный скрипт. Спасибо за вашу помощь. – paynod

+0

@paynod: использование одного и того же идентификатора не имеет ничего общего с отношениями. У меня есть один генератор последовательности для всех моих 500 таблиц. И что? Они все еще не имеют ничего общего – zerkms

1

Ниже запроса я где-то ... Пожалуйста, попробуйте после изменения поля в соответствии с вашими требованиями ...

Пример 1

DELETE user,items,orders FROM user LEFT JOIN items ON user.us_id = items.us_id LEFT JOIN orders ON items.od_id = orders.od_id WHERE user.us_id = $usrID

Пример 2

Ниже то, что я хотел сделать ...

DELETE FROM table1 WHERE data_id='111'; 
DELETE FROM table2 WHERE data_id='111'; 
DELETE FROM table3 WHERE data_id='111'; 

Для этого я использовал ниже код

DELETE FROM table1, table2, table3 
USING table1 
    INNER JOIN table2 USING(data_id) 
    INNER JOIN table3 USING(data_id) 
WHERE table1.data_id = 111 

Good Luck !!!

+0

Спасибо, я попробую, чтобы ваш метод выглядел точно так же, как тип сценария, который мне нужен. Я должен иметь возможность заменить результат вопросительными знаками и запустить подготовленный оператор, используя этот синтаксис, правильно? – paynod

+0

Есть ли какие-либо ** практические ** причины при соединении вместо разделенных запросов? Присоединение - это дорогостоящая операция, которая расходует ресурсы – zerkms

Смежные вопросы