0

我的数据库中有一个问题,在我有一个更新表或插入的 php 脚本中有一个字段名“show”,即使我将其更改为“showz”,所有内容都对字段名“show”有效!我认为这是一个小故障,这是 php 代码的一部分!

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,“展示”没有任何帮助!

4

3 回答 3

4

那是因为show它是一个保留字(如insert,updateorder)。您可以在此处阅读有关保留字的信息: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']."'");

这告诉 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']."'");
于 2012-12-20T14:32:40.503 回答
4

AS show是MySQL的保留字,如果用作表名或列名,需要用反引号(`)括起来

`show`
于 2012-12-20T14:33:16.837 回答
3

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

表 9.2。MySQL 5.0.96 中的保留字

在此处输入图像描述

所以像这样使用

`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/mysqlPHP 扩展提供了所有以 mysql_ 为前缀的函数,从 PHP v5.5.0 开始正式弃用,并将在未来删除。所以使用PDO或者MySQLi

好读

  1. 不推荐使用 mysql 扩展并将在将来删除:请改用 mysqli 或 PDO
于 2012-12-20T14:33:37.997 回答