2016-03-22 17 views
0
$query="UPDATE `a`.`b` SET `aa` = ?, `ab` = ?, ac` = ?, `ad` = ?, `ae` = ?, `af` = ?, `ag` = ? WHERE `aa` = ? AND month(ac)= ?;"; 

sorgu çalıştıran ancak veritabanını güncelleyerek değildir ...Bu hazırlanan Güncelleştirme SQL sorgusundaki hata nerede? Eksik

+3

AC'de backtick yok mu? – user234461

+0

Çalıştırsa ancak güncelleme yapmazsanız, eşleşme uyuşmuyor .. – scaisEdge

+0

Hazırlanmış bir deyimde SQL metnin sonunda bir noktalı virgül var mı? Bunun bir hata olduğunu bilmiyorum, ama bana çok garip geliyor. Ve "ac" tanımlayıcısı ifadede ikinci referansta kaçmadı. Diğer tüm tanımlayıcıların kaçmış olması gerçekten garip görünüyor. Diğerleri de belirttiği gibi en bariz problemler elbette ki yazım hatası, 'ac' etrafında dengesiz backtick'tir. – spencer7593

cevap

1
[..snip..] = ?, ac` = ?, `ad` = ?, [..snip.] 
       ^

Bildirim şey var mı? Ve bu alan/tablo adlarının YOK'unun ilk etapta backticklere ihtiyaç duyduğunu unutmayın. Hiçbiri yine de saklı kelimeler değildir.

+0

Bu cevabın neden bir downvote aldığını anlamıyorum. Merakla, aynı sütun 'ac' için referans daha sonra ifadede backticks kapalı değildir. (Şahsen, gerekmediklerinde backtick kullanmamayı tercih ederim. Eğer backtick'leri kullanarak bu modeli takip etseydim, her yerde yapardım ve eğer bir ORM veya başka bir sarıcı/işleyici yazıyorsam, SQL ORM tarafından tüm tanımlayıcılardan kaçış olurdu. Çünkü her bir tanımlayıcının kaçması gerekip gerekmediğini bulmaktan daha çabuk ve kolay olacaktır. Benim ORM ANSI_QUOTES'in yanı sıra backtick'leri de işleyecektir. – spencer7593

+1

, bazı insanlar açık bir şekilde yanıt vermeyi düşündüğünden yazım hatası soruları itibar puanı almak için ucuz bir yoldur. –