查询表中带有&符号的表

时间:2011-07-14 12:48:32

标签: php mysql

我正在清理MySQL数据库,并且必须在多个表中进行一些类似的更改。因此,我收集了表格列表

$query = "
SELECT
    TABLE_NAME
FROM
    information_schema.COLUMNS
WHERE
    TABLE_SCHEMA = 'myDB' AND
    COLUMN_NAME = 'activeColumn'";

然后迭代每个进行我需要的更改。问题是这些表中的一些在标题中有一个&符号。我猜PHP和/或MySQL有这个问题,因为它抛出了我的方向

/* $query = "SELECT * FROM Cats&Dogs"; */
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 '&Dogs' at line 1

我已经找到了解决这个问题的方法,当你需要insert an ampersand in to the DB时,甚至当你have one in the WHERE clause时(事实上,这甚至不是一个完整的解决方案,但它是我发现的最好的解决方案)。如果我在不使用PHP的情况下输入MySQL的确切查询,那么它就可以工作。

可能导致此问题的原因是什么?

3 个答案:

答案 0 :(得分:4)

反引号。 SELECT * FROM `Cats&Dogs`

参考:http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

答案 1 :(得分:1)

尝试使用反向单引号转义表名:

SELECT * FROM `Cats&Dogs`;

答案 2 :(得分:-1)

在您向数据库发布输入时使用addslashes()并在从数据中获取时使用stripslashes(),这将允许在数据库中存储和检索特殊字符