INSERT INTO 只使用转义的单引号......神秘?

问题描述 投票:0回答:1

我有一个非常奇怪的问题。

有一个 PHP 文件,如果我在行名称中使用 `,我只能

插入
MySQL 表,但在其他 PHP 上,它不需要它并且插入到同一个表中工作得很好。

对于example1.php,如果我不使用

`
,那么它会失败而不返回任何错误。

例如example1.php:

mysqli_query($conn, 'INSERT INTO table_name (`one`, `two`, `three`) VALUES ("one", "two", "three")');

会起作用,但是

mysqli_query($conn, 'INSERT INTO table_name (one, two, three) VALUES ("one", "two", "three")');

不会,但是......对于example2.phpexample3.phpexample4.phpetc

mysqli_query($conn, 'INSERT INTO table_name (one, two, three) VALUES ("one", "two", "three")');

工作得很好,当我不使用

mysqli_error($conn)
.时,我在example1.php
上回显
`

没有错误

我知道这不是什么大问题,但不知道为什么让我发疯?

php mysql escaping sql-insert quote
1个回答
0
投票

我认为这与 MySQL 中的保留关键字有关——像

"one"
"two"
这样的词在 MySQL 查询语言中有特殊的含义——当你将关键字括在反引号 (`) 中时——它可以告诉MySQL,您将它们称为列名而不是保留关键字。

另一种可能性是您要插入的表的列名是保留关键字——将列名括在反引号中以避免错误

更新 是否有可能不同的 PHP 文件连接到不同的数据库/表?或者他们使用不同版本的 MySQL 驱动程序? -- 这可以解释您看到的不同行为 -- 检查连接设置,确保所有 PHP 文件都连接到同一个数据库和表

© www.soinside.com 2019 - 2024. All rights reserved.