2011-04-11 66 views
1

我有一個關於我的MySQL查詢語法錯誤的mysql查詢語法?

問題,當我使用這個

$result = $db->executeQuery('SELECT * FROM `person` WHERE '.$searchOn.' LIKE "%'.$critera.'%" '); 

查詢返回的結果。

但使用此查詢

$result = $db->executeQuery('SELECT * FROM `person` WHERE "'.$searchOn.'" LIKE "%'.$critera.'%" '); 

查詢返回什麼...

之間有什麼區別 '$ searchOn。' 當和「'。$ searchOn。'」?

+1

SQL字符串文字用''''不包含''' – Nishant 2011-04-11 09:53:48

回答

1

列名不應使用單引號或雙引號引用。

您在where子句中的列名旁邊有雙引號。

$result = $db->executeQuery('SELECT * FROM `person` 
    WHERE "'.$searchOn.'" LIKE "%'.$critera.'%" '); 

最終查詢: -

SELECT * FROM `person` WHERE "field_name" LIKE ... 

導致該MySQL錯誤。

你可以在``反引號中包含列名以避免再次導致mysql保留字的任何奇怪錯誤。

編輯

您的查詢應該是這樣的。

$result = $db->executeQuery('SELECT * FROM `person` 
    WHERE `'.$searchOn.'` LIKE "%'.$critera.'%" '); 
+0

Tnx作爲回答,但是我的php var是列名稱,所以如何在查詢中正確設置此語法? – DownDown 2011-04-11 10:03:06

+0

@Down:如果你再次閱讀我的答案,你會得到 – 2011-04-11 10:04:40

+0

真的tnx爲你回答它的工作。 但是,當我擴展我這樣的查詢 $ sql =「SELECT * FROM'person' WHERE''。$ searchOn.'' LIKE%'。$ critera。'%ORDER BY''。$ searchOn.'' ASC LIMIT'。$ start。','。$ per_page'「; 它不工作了。 我確定$ start和$ per_page包含值。 你有什麼建議嗎? – DownDown 2011-04-11 10:19:16

0

columnname不能用雙引號引起來。如果您想使用引號,則使用您用於表名稱的引號。

0

我認爲這是由於單引號和雙引號的錯誤使用引起的。

嘗試:

$result = $db->executeQuery("SELECT * FROM person WHERE ".$searchOn." LIKE %".$critera."%"); 

或者:

$result = $db->executeQuery("SELECT * FROM person WHERE $searchOn LIKE %$critera%"); 

雙方應該工作...

基本上是這樣,當你連接字符串和PHP變量...