Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我是否应该准备所有查询,即使它们只执行一次?_Php_Mysql_Pdo_Prepared Statement - Fatal编程技术网

Php 我是否应该准备所有查询,即使它们只执行一次?

Php 我是否应该准备所有查询,即使它们只执行一次?,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,使用PHP的PDO类,如果每个连接只执行一次查询,那么准备查询是否会导致(轻微的甚至)性能下降,而这并没有得到弥补?我正在制作一个小的数据访问层,我想知道盲目地准备所有查询是可以的,还是应该只准备将被重用的查询。准备好的语句不仅仅用于重用的查询。它们应该用于所有具有不可信数据的查询,确保绑定不可信数据。这消除了SQL注入机会 不,这没有意义。使用$dbh->quote&$dbh->query,它既安全又快速。盲目地准备没有任何参数的查询是可以的?它是否会造成性能损失(甚至可以忽略不计)?是的,性

使用PHP的PDO类,如果每个连接只执行一次查询,那么准备查询是否会导致(轻微的甚至)性能下降,而这并没有得到弥补?我正在制作一个小的数据访问层,我想知道盲目地准备所有查询是可以的,还是应该只准备将被重用的查询。

准备好的语句不仅仅用于重用的查询。它们应该用于所有具有不可信数据的查询,确保绑定不可信数据。这消除了SQL注入机会


不,这没有意义。使用$dbh->quote&$dbh->query,它既安全又快速。

盲目地准备没有任何参数的查询是可以的?它是否会造成性能损失(甚至可以忽略不计)?是的,性能损失很小。当您准备查询时,它会被发送到服务器进行解析,然后当您执行查询时,它会再次被发送。与只发出query()而只发送一次相反,如果您担心性能,您还可以设置PDO来模拟准备好的语句,从而只进行一次查询server@sreimer:这是默认设置(请参阅上的此线程)。这样做还可以消除SQL注入带来的保护,而SQL注入是通过执行真正的预处理语句来实现的。。。