sql错误

avwztpqn  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(274)

这个问题在这里已经有答案了

在mysql中何时使用单引号、双引号和反引号(13个答案)
两年前关门了。
我正在努力处理一个sql插入,它在变量周围加引号或不加引号都会失败。
我试过:

$sql = "INSERT INTO bl1la (bl1la1, bl1la2, bl1la3, bl1la4, bl1la5, bl1la6, bl1la7, bl1la8, bl1la9, bl1la10, bl1la11) VALUES (null, $bl1la2, $bl1la3, $bl1la4, $bl1la5, $bl1la6, $bl1la7, $bl1la8, $bl1la9, $bl1la10, $bl1la11)";

并收到“检查手动错误”。我也用引号试过

$sql = "INSERT INTO bl1la (bl1la1, bl1la2, bl1la3, bl1la4, bl1la5, bl1la6, bl1la7, bl1la8, bl1la9, bl1la10, bl1la11) VALUES (null, `$bl1la2`, `$bl1la3`, `$bl1la4`, `$bl1la5`, `$bl1la6`, `$bl1la7`, `$bl1la8`, `$bl1la9`, `$bl1la10`, `$bl1la11`)";

但是,这会给出一个字段名警告。
我已经重命名了表、字段和变量名,以确保没有使用任何保留字(因此使用了“bl1la*”字段名和变量),但没有运气。

kd3sttzy

kd3sttzy1#

您需要使用单引号,而不是像您那样使用反引号。试试这个:

$sql = "INSERT INTO bl1la (bl1la1, bl1la2, bl1la3...) VALUES (null, '$bl1la2', '$bl1la3'...)";

在非数字列的值周围只需要单引号。您没有提供列的类型,因此我们无法区分哪些列需要单引号,哪些不需要单引号。
同样使用这样的内联查询对sql注入也是开放的。考虑改用参数化查询。
另一方面,后面的记号用于mysql环绕列名(而不是值)。只有当表名不是有效标识符(例如保留字或包含空格等无效字符)时,才需要它们。

相关问题