当前位置: 首页 > 面试题库 >

处理PDO :: prepare()添加的报价

顾嘉德
2023-03-14
问题内容

根据PHP文档,PDO :: prepare()在所有参数中都加上引号,这样您就不必担心这样做了:

“准备语句的参数不需要加引号;驱动程序会自动处理。如果应用程序专门使用准备语句,开发人员可以确保不会发生SQL注入(但是,如果查询的其他部分正在使用未转义的输入构建,仍然可以进行SQL注入)。”

对我来说,这个问题是我构建查询和数据库结构的方式。通常,不需要对SQL语句的FROM部分进行参数设置,因为Table可能是由直接用户输入定义的。但是,在某些地方使用我的代码是这样,因此我对参数化版本感到更自在。

SELECT * FROM ? WHERE ?=?

而不是SELECT * FROM tablename WHERE?=?

所以我的问题是,是否可以防止我的PDO对象在FROM参数周围添加引号,以使我不会在脸上抛出SQL错误?还是我必须以其他方式执行此操作。


问题答案:

准备好的语句中的占位符仅用于值。插入动态表名称的唯一方法是自己完成

"SELECT FROM `".$table."` WHERE `".$column."` = ?"


 类似资料:
  • PDO 事务处理 PDO 事务对象方法 方法 描述 beginTransaction() 启动一个事务 commit() 提交一个事务 rollBack() 回滚一个事务 inTransaction() 检测是否在一个事务内 注意:当需要使用事务的时候,数据库表引擎不能是 MyISAM ,必须要是 InnoDB。 <?php try { $host = 'mysql:host=local

  • 问题内容: 这个问题已经在这里有了答案 : 我的PDO声明无效 (1个答案) 4年前关闭。 我正在尝试在php上使用类,但是在查找正确的错误处理方式时遇到了一些麻烦,我编写了以下代码: 这部分代码不报告错误,但根本不起作用,底部的var 返回空值。 有人可以帮我找到我错了吗? 问题答案: 除非您告知,否则PDO不会引发异常。你跑了吗: 在PDO对象上?

  • 问题内容: 您在何时何地在PDO中使用quote方法?考虑到以下事实,我问这个问题:在PDO中,所有引用都是由PDO对象完成的,因此,不应对用户输入进行转义/引用等操作。这让人想知道为什么担心如果不使用quote方法反正在准备好的陈述中? 问题答案: 虽然这可能不是唯一的用例,但它是我唯一需要的用例。您只能使用传递值,例如,该查询将不起作用: 进入以便您可以执行以下操作: 并且仍然希望在查询中安全

  • 我已经通过Spring Boot实现了一个Kafka简单主题消费者,我想使用@KafkaListener注释来获取消息。到目前为止还不错,我对Kafka的方法很满意。我现在面临的问题是,我正在阅读的由第三方发送到这个主题的内容,我认为是由云流绑定生成的,并且有如下标题:ëë½ contentType“text/plain” originalContentType“application/jso

  • 我想在我想添加的最后一列之后,向现有数据库表中添加一些列。。scritp将为每个人提供,所以不确定最后一列是什么。 获取此错误: 致命错误:C:\xampp\htdocs\Webstats\Functions中的未捕获异常“PDOException”,带有消息“SQLSTATE[HY000]:一般错误:1靠近“,”:语法错误”。php:30堆栈跟踪:#0C:\xampp\htdocs\Websta

  • 问题内容: 此代码 出现错误 : 致命错误:在第42行的C:\ Users \ fel \ VertrigoServ \ www \ login \ validation.php中的非对象上调用成员函数prepare() 码: 可能的原因是什么? 另一个问题 是什么?抱歉,我是pdo的新手 问题答案: 未定义。您没有在函数内部声明它,也没有将其作为参数传递。 您需要将其传递(好),或在全局名称空间