2012-01-22 49 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

他们都共享相同的ID,所以他们被链接。它们不是索引或外键。我只想使用最动态的脚本。谢谢你的帮助。 – paynod

+0

@paynod:共享相同的“ID”与关系无关。我所有的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 

好运!

+0

谢谢我会尝试你的方法看起来完全像我需要的脚本的类型。我应该能够用问号替换结果,并使用此语法运行一个准备好的语句,对吧? – paynod

+0

在加入而不是分离的查询中是否有任何**实际**原因?加入是耗费资源的昂贵操作 – zerkms