Php 删除查询时出现SQL语法错误

Php 删除查询时出现SQL语法错误,php,mysql,sql,Php,Mysql,Sql,我正在开发一个连接到MySQL管理的数据库的网站。以下是pagamenti表和prenotazione表的结构: Pagamenti Prenotazione 在我的PHP代码中,我想使用字段IDPrenotazione从两个表中删除一条记录。我可以使用两种不同的查询,如下代码所示 $query1 = "DELETE FROM pagamenti WHERE IDPrenotazione='$ID'"; $query2 = "DELETE FROM prenotazione WHERE ID

我正在开发一个连接到MySQL管理的数据库的网站。以下是pagamenti表和prenotazione表的结构:

Pagamenti

Prenotazione

在我的PHP代码中,我想使用字段
IDPrenotazione
从两个表中删除一条记录。我可以使用两种不同的查询,如下代码所示

$query1 = "DELETE FROM pagamenti WHERE IDPrenotazione='$ID'";
$query2 = "DELETE FROM prenotazione WHERE IDPrenotazione='$ID'";
但如果我只使用一个查询,那会更好。我了解到,在SQL语言中,查询由
分隔,所以我尝试了这个代码

$query = "DELETE FROM pagamenti WHERE IDPrenotazione='$ID';
          DELETE FROM prenotazione WHERE IDPrenotazione='$ID'";
但是它返回这个错误

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DELETE FROM prenotazione WHERE IDPrenotazione='2017-0006'' at line 1
这是完整的代码,包括执行

$query = "DELETE FROM pagamenti WHERE IDPrenotazione='$ID';
          DELETE FROM prenotazione WHERE IDPrenotazione='$ID'";
if (mysqli_query($connessione, $query))
{
    //code
}
else
{
    echo mysqli_error($connessione);
}
如果我在phpMyAdmin上执行此代码,它将按照我所希望的方式工作,没有错误,因此查询必须是正确的

为什么它不能通过PHP工作?如何使其工作?

使用

mysqli\u multi\u query()函数对 数据库。查询用分号分隔


您可以通过一次查询从两个表中删除数据,但两个表之间必须存在关系

试着这样做:

 "DELETE `pagamenti`,`prenotazione ` from `pagamenti` LEFT JOIN `prenotazione ` on
 `pagamenti`.`id` = `prenotazione `.`pagementi_id` where `pagamenti`.`IDPrenotazione` = '". $ID."' 
  and `prenotazione`.`IDPrenotazione` = '" . $ID."'";
此处
pagamenti
id
=
prenotazione
pagementi\u id
是您需要在此处建立的关系

它对我有用。

试试这个

$query = "DELETE FROM pagamenti WHERE IDPrenotazione='$ID';DELETE FROM prenotazione WHERE IDPrenotazione='$ID'";

mysqli_multi_query($connessione, $query);

显示php代码的查询执行部分它可以正常工作,但就我个人而言,我坚持使用这两条语句。它更清晰,也不太容易出现其他错误。您不能这样运行:$query=“从pagamenti、prenotazione删除,其中IDPrenotazione='$ID'”?对于多个查询,请尝试默认的
mysqli\u查询
php函数不支持多个查询,我想是出于安全原因<代码>使用mysqli\u multi\u query
如果你真的需要这样做的话。谢谢你的回答,但是我已经用
mysqli\u multi\u query解决了这个问题
好的,但是如果你想在一个查询中删除两个表数据,那么你可以试试。很酷。
$query = "DELETE FROM pagamenti WHERE IDPrenotazione='$ID';DELETE FROM prenotazione WHERE IDPrenotazione='$ID'";

mysqli_multi_query($connessione, $query);