我是 mysql 和 php 的新手,想澄清一些有关准备语句的内容。
我看到的所有示例都只为表中的实际数据添加参数,将所有字段参数化以减少语句是否是一种不好的做法?例如
UPDATE ? SET ?=? WHERE ID=?
谢谢
最佳答案
您不能参数化标识符。您只能参数化数据。否则,参数化的要点,语句结构 和数据 之间的分离,就没有实际意义了。了解参数化不仅仅是花哨的复制和粘贴,它是一种确保数据库在 static 部分(它将从中获取指令)和 之间有明确分离的技术动态部分(它将被视为数据和仅数据)。
我个人不太理解为什么每个人都试图尽可能地减少 SQL 而不想写任何东西。在现实世界的应用程序中,应用程序将向数据库发送定义的有限 SQL 查询。将有一个查询通过用户名查找用户,一个计算 bar 表中 foo 的数量等。将这些查询一次,手写。有方法findUserByName()
某处,其中包含按用 SQL 写出的名称查找用户的查询。您不需要动态拼凑每个查询,只需编写一次即可。这也为您提供了所有可能的数据库交互的良好“ list ”,并允许在必要时进行手动调整。 </rant>
因此,这既不可能也被误导。
关于PHP\MYSQL 预处理语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16057356/