此查詢有什麼問題?Mysql查詢錯誤
$query2=mysql_query("SELECT * FROM $t_medici WHERE `oras` LIKE $orase") or die(mysql_error());
此代碼返回
Unknown column 'Bucuresti' in 'where clause'
此查詢有什麼問題?Mysql查詢錯誤
$query2=mysql_query("SELECT * FROM $t_medici WHERE `oras` LIKE $orase") or die(mysql_error());
此代碼返回
Unknown column 'Bucuresti' in 'where clause'
$orase
需要加引號。
$query2=mysql_query("SELECT * FROM $t_medici WHERE oras LIKE '$orase'") or die(mysql_error());
把$orase
放在單引號內。 如果您需要使用%符號。
如果oras
領域是一個字符串,然後$orase
應該有它周圍的單引號:
$query2=mysql_query("SELECT * FROM $t_medici WHERE `oras` LIKE '$orase'") or die(mysql_error());
什麼情況是,可變$orase
包含字符串Bucuresti
當達到該行與SQL代碼因此結束像這樣:
...WHERE `oras` LIKE Bucuresti
但你也應該逃避它(防止SQL我njection):
$query2=mysql_query("SELECT * FROM $t_medici WHERE `oras` LIKE '".mysql_real_escape_string($orase)."'") or die(mysql_error());
而且我把周圍的任何其他變量括號在雙引號字符串,即{$ t_medici}這裏:
$query2=mysql_query("SELECT * FROM {$t_medici} WHERE `oras` LIKE '".mysql_real_escape_string($orase)."'") or die(mysql_error());
在一個側面說明,如果你使用LIKE
這樣的字符串,那麼返回的任何行都必須精確到Bucuresti
(或任何$ orase成立),在它之前或之後(包括空格!)什麼都沒有。在這種情況下,完全沒有必要使用LIKE
;你還不如用=
像這樣:
"SELECT * FROM {$t_medici} WHERE `oras` ='".mysql_real_escape_string($orase)."'"
但是如果你想以某種方式匹配具有Bucuresti
(無論$ orase持有或)在oras
領域的任何行(如「布加勒斯特」,「布加勒斯特」,「 kdsbks kksd saBucurestie」,等等),那麼你應該使用%
像這樣:
"SELECT * FROM {$t_medici} WHERE `oras` LIKE '%".mysql_real_escape_string($orase)."%'"
即%Bucuresti%
if $orase
was hold Bucuresti
。
從互聯網複製查詢並編輯它時非常熟悉的錯誤。上面突出顯示的單引號。
您的問題尚不清楚... – diEcho 2012-01-05 18:45:23
SQL注入漏洞與此查詢有什麼關係。 – 2012-01-05 18:45:35
't_medici'表是什麼樣的? – 2012-01-05 18:45:52