This question already has an answer here:
Syntax error due to using a reserved word as a table or column name in MySQL
(1个答案)
5年前关闭。
当我删除'$ user'并通过此完美
用户是varchar(11)
当我print_r $ user我得到我想要的值
我不确定发生了什么,
抱歉,这个问题很愚蠢。
和平
MySQL Reserved Keywords List
我宁愿更改列名,以避免再次返回问题
附带说明一下,如果变量的值来自外部,则查询容易受到
How to prevent SQL injection in PHP?
(1个答案)
5年前关闭。
当我删除'$ user'并通过此完美
$query = $db -> query("INSERT INTO posts (title, body, tags, published, date, by) VALUES
('$title', '$body', '$tags', '$published', '$date', '$user')");
用户是varchar(11)
当我print_r $ user我得到我想要的值
我不确定发生了什么,
by
在表的末尾。抱歉,这个问题很愚蠢。
和平
最佳答案
因为BY
是保留关键字,并且恰好是该列的名称。为了避免语法错误,您需要使用反引号将其转义,
INSERT INTO posts (title, body, tags, published, date, `by`) VALUES (...)
MySQL Reserved Keywords List
我宁愿更改列名,以避免再次返回问题
:D
附带说明一下,如果变量的值来自外部,则查询容易受到
SQL Injection
的攻击。请查看下面的文章,以了解如何防止它。通过使用PreparedStatements
,您可以避免在值周围使用单引号。How to prevent SQL injection in PHP?
10-04 12:41