2017-07-20 18 views
1

MySQLが管理するデータベースに接続しているWebサイトで作業しています。これらはpagamentiprenotazioneテーブルの構造体である:DELETEクエリによるSQL構文エラー

Pagamenti

table_pagamenti

Prenotazione

table_prenotazione

I n私のPHPコードIDPrenotazioneフィールドを使用して、両方のテーブルからレコードを削除したいとします。

のように2つの異なるクエリを使用できますが、クエリを1つしか使用しないともっとうまくいくでしょう。私は、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で動作しないのですか?どうすればそれを動作させることができますか?

+0

を試すには、PHPコード – JYoThI

+0

のクエリ実行部を示し、動作させることができますが、個人的に私は2文に固執でしょう。それはより明確で、他のエラーも起こりにくい。 –

+0

あなたはこれを次のように実行できません:$ query = "DELETE FROM pagamenti、prenotazione WHERE IDPrenotazione = '$ ID'"; ? – David

答えて

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); 
0

あなたは1クエリことにより、2つのテーブルからデータを削除することができますが、2つのテーブルの間の関係がなければなりません。

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

pagamenti

は次のように試してみてください。 id = prenotazionepagementi_idはあなたがここに置く必要がある関係です。

私のために働いています。

+0

答えていただきありがとうございますが、私はすでにmysqli_multi_queryを使ってこの問題を解決しています – mara6399

+0

Okayそれは良いですが、1つのクエリで2つのテーブルデータを削除すると思われる場合は、 を試してみてください。これはクールです。 –

1

この

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

mysqli_multi_query($connessione, $query);