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

如何使用PDO动态构建查询

诸腾
2023-03-14
问题内容

我正在使用PDO,并希望执行以下操作:

$query = $dbh->prepare("SELECT * FROM :table WHERE :column = :value");
$query->bindParam(':table', $tableName);
$query->bindParam(':column', $columnName);
$query->bindParam(':value', $value);

PDO是否允许我这样绑定表名和列名?这 似乎是 允许的,但是却让我周围的报价参数,即使我用PDO :: PARAM_INT或PDO ::
PARAM_BOOL作为数据类型。

如果这不起作用,如何安全地对变量进行转义,以便可以在查询中对它们进行插值?


问题答案:

不幸的是,您不能按列名绑定参数。

您可以尝试动态创建SQL命令:

$sql = "SELECT * FROM $tableName WHERE $columnName = :value";
$query = $dbh->prepare($sql);
$query->bindParam(':value', $value);

只要确保对参数/变量来自其他地方进行消毒,就可以防止SQL注入。在这种情况下,$value是安全 的程度
,但$tableName$columnName没有-再次,这是最特别的是,如果不提供通过这些变量的值you和而不是用户/访港的/ etc




 类似资料:
  • 这个问题的主要原因如下。我正在动态填充,但什么都没有发生。

  • 现在,我的CreditCard对象包含两个属性(发行商、network和id),因此很容易搜索像这样的对象: 但是,我不喜欢这段代码,因为我必须创建所有属性的组合,而且会非常混乱。在未来,我计划有15个财产,所以‘如果’链是不可能的。 我想问你,如何使用spring-data-redis创建动态查询,使Redis能够以比检查每个属性更好的方式基于对象属性返回交集?

  • 问题内容: 我是Python的新手,并且正在使用JSON数据。我想通过向现有JSON对象添加一些键值来动态构建JSON对象。 我尝试了以下方法,但得到了: 问题答案: 您在将对象编码为JSON字符串 之前先 对其进行构建: JSON是 序列化 格式,文本数据 表示 结构。它本身不是那个结构。

  • 我是JavaFx新手,尝试用三个StackPane构建下面的屏幕,可以根据窗口大小动态地增加和缩小宽度和高度。我尝试了不同的方法,但没能做到这一点。我还尝试使用锚烷约束。这是我试图实现的图像和相应的FXML。以下是我在这些窗格之间寻找的约束条件 左窗格具有最大宽度(300px)和最小150 左右之间的距离(2)堆栈窗格应保持不变 右顶部和底部堆栈窗格之间的距离应保持不变 左顶部堆栈窗格的最大高度为

  • 我想在用户在UI中选择的MongoDB中的文档列表上运行批量删除操作,因此我需要动态构建一个如下所示的查询(or子句为所选的每个文档展开): 刚才我正在使用字符串串联来实现这一点。 是否可以使用Spring数据MongoDB标准生成器(org.springframework.Data.MongoDB.core.query.Criteria)构建此查询?

  • 问题内容: 这是我的尝试: 问题答案: 我发布后马上想通了: