无法在列名中插入包含冒号的列

时间:2014-05-08 09:37:17

标签: php mysql sql

我正在尝试插入列名为00:18的列:e7:f9:65:a6,带有语句

ALTER IGNORE TABLE tblwifi_information ADD "00:18:e7:f9:65:a6" INT 

...但它会引发错误:

/* SQL 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 '"00:18:e7:f9:65:a6" INT' at line 1 */
<\ n>在Heidi SQL中。我正在使用MySQL数据库。

当我尝试手动添加列时b进入表的结构它工作,并没有给出任何错误但是当我运行此语句时它不允许我。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

我刚刚运行了您的查询:

ALTER IGNORE TABLE tblwifi_information ADD "00:18:e7:f9:65:a6" INT 

并得到了同样的错误。然后我跑了:

ALTER IGNORE TABLE tblwifi_information ADD `00:18:e7:f9:65:a6` INT 

它有效。很确定你需要改变“到`

双qoutes失败: Failed with double quotes

反击成功: Success with backticks

答案 1 :(得分:2)

使用反引号作为列名

变化

ALTER IGNORE TABLE tblwifi_information ADD "00:18:e7:f9:65:a6" INT 

ALTER IGNORE TABLE tblwifi_information ADD `00:18:e7:f9:65:a6` INT 

SQL FIDDLE

答案 2 :(得分:1)

要在故事中添加内容,在查询多个表时,必须使用以下表达式:

`tablename`.`columnname`

(不是`tablename.columnname`)

我花了一些时间来弄明白,所以我希望它有助于某人:)

示例:

SELECT * 
FROM tb_product p
JOIN tb_brand b ON (  `p`.`tb_brand:IDbrand` =  `b`.`IDbrand` ) 
WHERE IDfamily = 2

答案 3 :(得分:0)

我真的不知道你想要在这里找到什么。 而不是:

00:18:e7:f9:65:a6

00_18_e7_f9_65_a6

然后调整您的代码以替换&#34;:&#34;到&#34; _&#34;在php或mysql中。

在sql:

Replace(table_name, ':', '_');
PHP中的

srt_replace(':','_',$query);