Sql sözdizimi hatası

2 Cevap php

İşte benim sorgu:

$query="Delete b
Where Exists 
    (
        Select 1
        From a
        Where a.poster_password = '$pass'
        And a.ad_id = '$id'
        And a.classified_id = b.classified_id
    )
Delete a
Where a.poster_password = '$pass'
And a.ad_id = '$id'";

Ben bu hatayı alıyorum:

"Sen SQL sözdizimi bir hata var; hattında 2 at '(bir Where a.poster_p itibaren 1 seçin Nerede Var yakınındaki kullanılacak doğru sözdizimi için MySQL sunucu sürümü karşılık kılavuzunu kontrol"

Eğer daha fazla girdi ihtiyacınız varsa bana bildirin ...

Yanlış nedir burada?

Teşekkürler

UDPATE:

Sadece bir S: Ben de a = "Bu tabloyu" ve b = "başka bir tablo" belirtmeniz gerekir mi ya MySql olsun gelmez bu kodla?

DAN ve bir sonlandırıcı noktalı virgül, alışkanlık işi kullanmak ve bu hatayı vermeye nerede yayınlanmıştır yeni kod gelince:

Eğer SQL sözdizimi bir hata var; Doğru sözdizimi yakınındaki hattında 10 at XXXXXXXXXXXXXXXXXXXXX 'a nerede a.poster_password = DAN sil' kullanmak için MySQL sunucu sürümü karşılık kılavuzunu kontrol

UPDATE2:

 $query="Delete FROM $sql_table
Where Exists 
(
Select 1
From classified
Where classified.poster_password = '$pass'
And classified.ad_id = '$id'
And classified.classified_id = $sql_table.classified_id
);
Delete FROM classified
Where classified.poster_password = '$pass'
And classified.ad_id = '$id'";

Ve ne zaman echo $query: (Fordo sql_table değişken $ bu durumda.)

Fordo silin burada (sınıflandırılmış nerede classified.poster_password = 'xxxxx' Ve classified.ad_id = 'motorbat_166250627' Ve classified.classified_id = fordon.classified_id itibaren Seç 1) Var; Nerede classified.poster_password = 'xxxxx' Ve classified.ad_id = 'motorbat_166250627' sınıflandırılmış DAN Sil

Teşekkürler again

2 Cevap

Sen silmek tabloları belirterek değiliz. Deneyin:

$query="Delete FROM b
Where Exists 
    (
        Select 1
        From a
        Where a.poster_password = '$pass'
        And a.ad_id = '$id'
        And a.classified_id = b.classified_id
    );
Delete FROM a
Where a.poster_password = '$pass'
And a.ad_id = '$id'";

Ben de ilk DELETE sorgunun sonunda bir noktalı virgül ekledik. Eğer aynı anda hem çalıştırmak istiyorsanız ikinci sürümü çalıştırmadan önce, ilk sorguyu sonlandırmak için bir ayırıcı gerekir.

Tabloları "alma" MySQL hakkında Re. soru düzenleme - a ve b takma adlar burada, o zaman, MySQL ne {[(bilmiyorsa 1)]} ve b vardır. Sen tabloları diğer ad gerekir, ya da gerçek tablo adları ile a ve b olarak değiştirin edeceğiz.

İki siler ayrı tablolar (ve ayrı ayrı çalıştırılır) olması gerekir.