2013-12-08 223 views
-2

我遇到問題,無法找到答案。下面的語句爲什麼這個MySQL語句會導致語法錯誤?

SELECT (title, content, keywords, descr, sidebar) FROM staticpages WHERE req = 'index' 

引發以下錯誤

Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0' at line 1 

我插入帶有mysql_real_escape_string字符串「指數」,但我已經驗證,它包含「索引」。數據庫中有一個符合WHERE的條目(即使沒有,也不應該有語法錯誤)。

//編輯:查詢由下面的PHP代碼產生:

if ($res = $db->query("SELECT title, content, keywords, descr, sidebar FROM staticpages WHERE req = '"+$db->real_escape_string($page)+"'")) { 
    //... 
} else { 
    echo "Error " . $db->errno . ": " . $db->error; 
} 

$db包含mysqli的實例,$page包含字符串"index"

+0

我不認爲您發佈的查詢是滿的,該錯誤信息是指在查詢犯規退出0。 – Mihai

+0

@Mihai也有同感。我將更新問題並向您展示生成查詢的PHP代碼。 – fNek

+2

不確定,但+是javascript中的連接運算符,在PHP中是點。 ''。$ db-> real_escape_string($ page)。''' – Mihai

回答

0

It只是我自己的愚蠢:

在PHP中,+運算符不會協調字符串。對不起,這個問題打擾你。

解決方案:使用字符串concatination運算符.

2

你有兩個選擇關鍵字

SELECT SELECT (title, content, keywords, descr, sidebar) FROM staticpages WHERE req = 'index' 
    -------^ 

刪除其中的一個。

+0

不,那個在這個問題上是一個錯字,但是謝謝。 – fNek

+0

@fNek,嘗試刪除括號並進行拍攝。 –

0

你有兩個選擇,和字段列表不應該在括號...

select 
     field1, 
     field2, 
     field3 
    from 
     yourtable 
    where 
     someCondition 
    order by 
     someFieldChosen 
+0

這兩個選擇是一個錯字。沒有括號也沒有用。 – fNek

0

試試這個 - 不圓括弧:

SELECT title, content, keywords, descr, sidebar 
FROM staticpages 
WHERE req = 'index' 
0
SELECT `title`, `content`, `keywords`, `descr`, `sidebar` FROM staticpages WHERE `req` = 'index' 

不知道什麼PHP模板是您正在使用但嘗試

'".$db->real_escape_string($page)."' 
0

SELECT titlecontentkeywordsdescrsidebar FROM staticpages WHERE req = 'index'

相關問題