2012-12-20 39 views
0

我在我的DB有一个问题有一个字段名'显示' 我有一个PHP脚本更新表或插入和一切工作的字段名称'显示'即使如果我改变它'showz'它的工作! 我认为这是一个小故障这里是一部分的PHP代码!php mysql插入/更新字段名称显示

mysql_query("INSERT INTO db.table (mid, name, show) VALUES ('".$row['mid']."',  '".$row['name']."', '".$row['show']."') ON DUPLICATE KEY UPDATE name = '".$row['name']."', show = '".$row['show']."'"); 

我试图把展会东西“秀”,show,“秀”没有什么帮助!

+0

'show'关键字由的MySQL,使用'\'秀\'' – vlcekmi3

+1

你说保留你试图把'show'放入反引号\'show \'中,这是正确的,就像你在这三个答案中看到的那样。你确定,你把两个** show出现在反引号中吗? –

回答

4

AS展现的是一个MySQL reserved word,你需要把它们放在反引号('),如果你使用它作为表或列名

`show` 
+0

谢谢我使用过,但是当我从这里复制/粘贴它时,它可以使用我的记事本++ –

4

这是因为show是一个保留字(如insert,updateorder等)。你可以阅读有关保留字在这里:MySQL Reserved Words

为了使用保留字,因为你需要用反引号(')进行转义字段名像这样:

mysql_query("INSERT INTO db.table (mid, name, `show`) VALUES ('".$row['mid']."',  '".$row['name']."', '".$row['show']."') ON DUPLICATE KEY UPDATE name = '".$row['name']."', `show` = '".$row['show']."'"); 

这告诉MySQL来对待它作为一个领域,而不是用它的保留字的意思。

我觉得这是很好的做法,总是逃避与反引号我的表和字段名称,像这样:

mysql_query("INSERT INTO `db`.`table` (`mid`, `name`, `show`) VALUES ('".$row['mid']."',  '".$row['name']."', '".$row['show']."') ON DUPLICATE KEY UPDATE `name` = '".$row['name']."', `show` = '".$row['show']."'"); 
3

您正在使用保留关键字使用反引号

Table 9.2. Reserved Words in MySQL 5.0.96

enter image description here

所以使用像

`show` 

在反引号,而翘曲所有冒号的名字是不错的办法

mysql_query("INSERT INTO `db`.`table` (`mid`, `name`, `show`) VALUES ('".$row['mid']."',  '".$row['name']."', '".$row['show']."') ON DUPLICATE KEY UPDATE `name` = '".$row['name']."', `show` = '".$row['show']."'"); 

注意

  1. 整个ext/mysql PHP扩展,它提供所有以前缀mysql_命名的函数,是officially deprecated as of PHP v5.5.0,将来会被删除。所以请使用PDOMySQLi

良好的阅读

  1. The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead