当我在phpMyAdmin中直接尝试时:
DELETE FROM navigation WHERE id='14';DELETE FROM subnavigation WHERE navi_id='14';
它可以正常工作,但当我无法使用我的PHP查询时:
$db->query('DELETE FROM navigation WHERE id='.$id.';DELETE FROM subnavigation WHERE navi_id='.$id.';');
它给了我这个错误,并没有删除任何东西:
您的SQL语法有错误; 检查对应的手册 您的MySQL服务器版本 正确的语法在'DELETE FROM附近使用 subnavigation WHERE navi_id = 14'at 第1行
我认为我错过了一些非常小的东西! 感谢您的时间和帮助。
答案 0 :(得分:2)
mysql_query()向与指定link_identifier关联的服务器上的当前活动数据库发送唯一查询(不支持多个查询)。
http://php.net/manual/en/function.mysql-query.php
PhpMyAdmin基于分隔符展开字符串并作为多个查询执行。
如果你想取消这本书(不推荐)
您只需将标志65536作为mysql_connect的5参数(client_flags)传递。该值在/usr/include/mysql/mysql_com.h
:
#define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support */
<强>更新强>
在第一个表上创建一个触发器,因此ON DELETE它也将从第二个表中删除。
答案 1 :(得分:1)
进行一次查询。
//don't forget to protect yourself from SQL-injection attacks!
$id = mysql_real_escape_string($id);
$delete_query = " DELETE n, sn from navigation n
LEFT JOIN subnavigation sn ON (n.id = sn.id)
WHERE n.id = '$id' ");
$db->query($delete_query);
答案 2 :(得分:1)
这样的多个语句不是查询,它们形成一个脚本。查看提交SQL脚本。 http://www.shinephp.com/php-code-to-execute-mysql-script/