使用PHP重命名非法列名称for mySQL

问题描述:

我的表中有一列名为“read”的列。 当我尝试对它执行操作时,PHP告诉我环绕'read'有错误。根据之前对这类错误的经验,我确定列名'read'是非法的。 问题是我无法用PHP重命名该列。每次尝试时,我都会遇到错误(实际上是同一个错误)。 当我进入PHPMyAdmin并在那里改变它时,它完美地工作。使用PHP重命名非法列名称for mySQL

关于如何使用PHP更改列名的任何想法?

当你说“重命名”,你的意思是你试图修改表的定义本身,就像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

围着桌子名称使用反引号,像这样:

select * from `read` 

它告诉你指的是一个名字,而不是关键字的MySQL。

+0

所以在PHP中它会是SELECT * FROM'读''吧? – user866339

+0

@ user866339不是,那些是单引号。你需要使用反引号。我给你留下了更多的信息,作为对你对我的回答的评论的回应。 – AgentConundrum