2011-08-19 61 views
1

我的表中有一列名爲「read」的列。 當我嘗試對它執行操作時,PHP告訴我環繞'read'有錯誤。根據之前對這類錯誤的經驗,我確定列名'read'是非法的。 問題是我無法用PHP重命名該列。每次嘗試時,我都會遇到錯誤(實際上是同一個錯誤)。 當我進入PHPMyAdmin並在那裏改變它時,它完美地工作。使用PHP重命名非法列名稱for mySQL

關於如何使用PHP更改列名的任何想法?

回答

2

當你說「重命名」,你的意思是你試圖修改表的定義本身,就像ALTER TABLE?如果是這樣,你的PHP代碼和PHPMyAdmin應該沒有區別(因爲後者本身就是PHP代碼)。唯一可能遇到的問題是,如果您在PHP代碼中以不同的數據庫用戶身份登錄,那麼您在PHPMyAdmin中登錄。您需要確保該用戶在該表上有ALTER privileges

如果你只談論對錶運行正常查詢,只是想停止從出現的語法錯誤,那麼你可以換你的領域和/或表名在反引號 - 即`通常在與數字欄上的代字號相同的密鑰 - 並且MySQL將能夠區分字段名稱和保留字。

+0

我在發佈問題之前嘗試過,但它沒有起作用=( – user866339

+0

@ user866339如果這不起作用,那你爲什麼接受我的答案?我可以向你保證,反引號工作,但如果你想發表你的代碼作爲你的問題的編輯,我很樂意再次看看你的代碼。從你對Dani的回答的評論看來,你使用了錯誤的引用,你需要使用反引號,而不是單引號在評論中很難使用反引號,因爲SO使用它來表示代碼塊。這個wiki頁面可以告訴你反引號是什麼:http://en.wikipedia.org/wiki/Grave_accent – AgentConundrum

5

圍着桌子名稱使用反引號,像這樣:

select * from `read` 

它告訴你指的是一個名字,而不是關鍵字的MySQL。

+0

所以在PHP中它會是SELECT * FROM'讀''吧? – user866339

+0

@ user866339不是,那些是單引號。你需要使用反引號。我給你留下了更多的信息,作爲對你對我的回答的評論的迴應。 – AgentConundrum