如果查询中没有占位符/动态数据,您可以省略 PDO 准备吗?

2023-12-25

我目前正在开发一个将 PDO 与 MySQL 数据库结合使用的应用程序。

我看到一些查询,它们非常简单SELECT声明,例如

SELECT * FROM table ORDER BY name ASC

代码确实not use prepare, 例如:

    $sql = "SELECT * FROM " . $this->table . " ORDER BY name ASC";
    $stmt = $this->db->query($sql);
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
    return $results;

如果查询中没有占位符,是否可以执行此操作(即不使用准备)?

我问这个问题的原因是因为根据文档 http://php.net/manual/en/pdo.prepare.php它说

SQL语句可以包含zero或更多命名 (:name) 或问号 (?) 参数标记

这让我想知道为什么在没有()参数标记的情况下要使用它?


是的,因为使用准备好的语句有两个主要原因:

  1. 增强使用不同参数运行相同的查询。
  2. 通过将sql代码与参数分离来防止sql注入。

由于您没有可以由准备好的语句处理的参数(表名不能是参数),因此通过将查询作为准备好的语句推送,您不会获得任何结果。

您仍然需要确保返回的内容$this->table不会对生成的 sql 代码造成任何问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果查询中没有占位符/动态数据,您可以省略 PDO 准备吗? 的相关文章

随机推荐