Php 何时使用/不使用准备好的语句? 我什么时候应该使用准备好的声明?对于任何类型的查询或 具体种类 我应该使用准备好的语句来选择或插入这两种语句,等等 我什么时候不用它们

Php 何时使用/不使用准备好的语句? 我什么时候应该使用准备好的声明?对于任何类型的查询或 具体种类 我应该使用准备好的语句来选择或插入这两种语句,等等 我什么时候不用它们,php,mysql,mysqli,Php,Mysql,Mysqli,谢谢。准备好的语句应该用于包含参数的查询。否则,就是浪费资源 例如: $pdo->query("SELECT * FROM `table`"); //No need for preparing here, no parameters. 然而 $pdo->prepare("SELECT * FROM `table` WHERE `id` = :id"); //Prepare. 我什么时候应该使用准备好的声明?对于任何类型的查询或只是特定类型的查询 任何一种都可以。特别是如果您有专门

谢谢。

准备好的语句应该用于包含参数的查询。否则,就是浪费资源

例如:

$pdo->query("SELECT * FROM `table`"); //No need for preparing here, no parameters.
然而

$pdo->prepare("SELECT * FROM `table` WHERE `id` = :id"); //Prepare.
我什么时候应该使用准备好的声明?对于任何类型的查询或只是特定类型的查询

任何一种都可以。特别是如果您有专门的函数或类来运行查询。在这种情况下,应该只有一个方法来运行所有查询,不管它们是否有动态部分。
更不用说像“SELECT*FROM table”这样的所有静态查询在沙盒之外是很少见的

我应该使用准备好的语句来选择或插入这两种语句,等等

不重要。这个想法是用占位符表示查询中的每个动态值。查询类型绝对不重要

我什么时候不用它们


这个问题与第一个问题很相似。如果一直使用准备好的语句,你会帮自己一个大忙。

当你要使用来自程序之外任何地方的数据时,你应该使用准备好的语句和参数化查询。这包括与数据库的任何交互,无论是插入、删除或更新,甚至是选择


如果您使用外部数据生成SQL语句,您将处于危险之中。

当您有用户的输入将被保存或在数据库中执行某些操作时,请使用prepared语句。@491243:不仅是用户的输入,任何类型的“参数”,它还可能来自文件或其他程序。因此,如果没有参数,只需使用常规查询,如
$result=mysqli\u查询($cxn,“SELECT*fromtable”)?正确。否则,你就白白浪费了你的资源。有些人会告诉你要时刻准备的原因是,很多noob不知道每次使用的方式和时间,所以最好是全部准备好,而不是什么都不准备。一旦你知道了你的方向,这些类型的查询是你没有准备的。只是一个一般性的问题,为什么在从数据库中选择东西时要使用准备好的语句?为什么它们不只是用于插入?请阅读SQL注入了解更多信息。我也可以插入选择语句。除非你要衡量浪费的资源是否值得担心,否则“你在白白浪费资源”的警告可能无关紧要。这是一个严重的错觉。1.读一些关于二阶注入的东西。2.考虑<代码>斯嘉丽O'HARA在你宝贵的程序的内部进行硬编码,而不是妄想。我只是在讨论安全问题。我尽量让事情简单化。与其屈尊俯就,对我咆哮,你愿意为我提供一些关于二阶注入的文本和解释吗?消息来源是,这正是我所说的——安全方面。我个人并没有对任何人大喊大叫,这是我唯一争论的答案。这是非个人的。无论如何,老实说,我不明白为什么开发人员应该将他的数据分为“安全”和“不安全”。为什么不一视同仁呢?这不是更简单的方法吗?如果有两个开发人员,每个开发人员都在各自的程序中工作,会怎么样?他们应该如何在数据源上共享这些信息?我同意,我认为bobby-tables.com会从你们的观点中受益。请你愿意捐款吗?或者发送一个包含更新文本的请求,或者打开一个问题并将文本粘贴到其中,我将把它集成到站点中。