根据PHP文档PDO :: prepare()为所有参数添加引号,这样您就不必担心这样做了:
"不需要引用预处理语句的参数;驱动程序会自动处理此问题.如果应用程序专门使用预准备语句,开发人员可以确保不会发生SQL注入(但是,如果查询的其他部分正在进行用非转义输入构建,SQL注入仍然可行.)"
这对我来说的问题是我构建查询和数据库结构的方式.通常,SQL语句的FROM部分不需要参数化,因为表可能由直接用户输入定义.但是我的代码就是某些地方的情况,因此我对参数化版本感觉更舒服.
SELECT * FROM ? WHERE ?=?
Run Code Online (Sandbox Code Playgroud)
而不是SELECT*FROM tablename WHERE?=?
所以我的问题是,是否有可能阻止我的PDO对象在FROM参数周围添加引号,以便我不会在我脸上抛出SQL错误?或者我必须以不同的方式做到这一点.
准备好的语句中的占位符仅用于值。插入动态表名的唯一方法是自己做
"SELECT FROM `".$table."` WHERE `".$column."` = ?"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3179 次 |
| 最近记录: |