我目前正在开发一个将 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) 或问号 (?) 参数标记
这让我想知道为什么在没有(零)参数标记的情况下要使用它?
是的,因为使用准备好的语句有两个主要原因:
- 增强使用不同参数运行相同的查询。
- 通过将sql代码与参数分离来防止sql注入。
由于您没有可以由准备好的语句处理的参数(表名不能是参数),因此通过将查询作为准备好的语句推送,您不会获得任何结果。
您仍然需要确保返回的内容$this->table
不会对生成的 sql 代码造成任何问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)