DELETE查询的SQL语法错误

时间:2017-07-20 09:56:13

标签: php mysql sql

我正在连接到由MySQL管理的数据库的网站上工作。这些是表 pagamenti prenotazione 的结构:

Pagamenti

table_pagamenti

价格预定

table_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工作?我怎样才能使它发挥作用?

3 个答案:

答案 0 :(得分:2)

使用mysqli_multi_query()

  

mysqli_multi_query()函数执行一个或多个查询   数据库。查询用分号分隔。

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

mysqli_multi_query($connessione, $query);

答案 1 :(得分:1)

试试这个

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

mysqli_multi_query($connessione, $query);

答案 2 :(得分:0)

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

试试这样:

 "DELETE `pagamenti`,`prenotazione ` from `pagamenti` LEFT JOIN `prenotazione ` on
 `pagamenti`.`id` = `prenotazione `.`pagementi_id` where `pagamenti`.`IDPrenotazione` = '". $ID."' 
  and `prenotazione`.`IDPrenotazione` = '" . $ID."'";

此处pagamentiid = prenotazionepagementi_id是你需要放在这里的关系。

它为我工作。