MySQL: nerede fıkra hata Bilinmeyen sütun

4 Cevap php

Ben bir PHP komut dosyası var ve nedense mysql için bir sütun olarak / ekleme seçmek için değerini tedavi tutar. İşte benim sql sorgu bir örneğidir:

$query = mysql_query("SELECT * FROM tutorial.users WHERE (uname=`".mysql_real_escape_string($username)."`)") or die(mysql_error());

Bu dönüşür:

SELECT * FROM tutorial.users WHERE (uname=`test`)

Hata:

Unknown column 'test' in 'where clause'

Ben de denedim:

SELECT * FROM tutorial.users WHERE uname=`test`

4 Cevap

MySQL, backticks bir tanımlayıcısının bir sütun adı olduğunu göstermektedir. (Diğer RDBMS için bu parantez veya çift tırnak kullanın).

Yani sorgu "Bana 'uname' adlı sütununda değer 'test' isimli sütununda değere eşit olduğu tüm satırları vermek" oldu. Lütfen tabloda test adlı bir sütun var çünkü Ama, sen gördün hatası alıyorum.

Tek tırnak ile backticks değiştirin.

Garip? Nasıl yani? Yanlış tam olarak ne diyor. Lütfen tabloda hiç 'test' sütunu vardır. Eğer doğru bir tablo var emin misiniz? 'Tutorial.users'? Eğer tablo farklı adlandırılmış olmadığından emin misin? Belki yapmak istemedim

SELECT * from users WHERE uname = 'test';

Yalnızca tablo adı değil veritabanı .. veritabanı olarak adlandırılır varsayarak tutorial başvurmak zorunda

Örnek:

$uname = $_POST['username'];
$sql="SELECT * FROM Administrators WHERE Username LIKE '$uname'"

$ Uname etrafında tek tırnak unutmayın. Sorguyu echo, bu çıkış olduğunu

SELECT * FROM Administrators WHERE Username LIKE 'thierry'

Eğer sorguda $ uname değişken etrafında alıntı özledim Ancak, bu elde edeceksiniz-ne

SELECT * FROM Administrators WHERE Username LIKE thierry

MySQL sunucusu, 2 sorguları farklıdır. thierry giriş dizesi ve doğru MySQL bir hataya neden olur, ikinci sorguda gibi, öyle değil tırnak işaretleri, kapsüllü. olduğunu

Umarım bu yardımcı olur ve çok iyi değil ki benim Englis bahane

I had the same issue and it turned out to be a typo. My error message was:

Unknown column 'departure' in 'where clause'

Ben tabloda çok sütunu kontrol ve ben bu nedenle hata mesajı atarak, "ayrılış" ve tablo değil "kalkış" olarak yazıldığından vardı çıkıyor.

Ben sonradan benim sorgu değiştirildi:

Unknown column 'depature' in 'where clause' 

ve işe yaradı!

Yani benim tavsiye açıkça, düzgün sütun adını yazıldığından çifte kontrol edilir.

Ben bu yardımcı umuyoruz.