我想知道是否应该将准备好的语句用于简单的选择查询?
如:
`SELECT * FROM `table_name`
有了这个,这样做不是更好吗:
$db->query('SELECT * FROM `table_name`');
我想知道是否应该将准备好的语句用于简单的选择查询?
如:
`SELECT * FROM `table_name`
有了这个,这样做不是更好吗:
$db->query('SELECT * FROM `table_name`');
如果查询只运行一次(每个脚本)并且其中确实没有变量,那么无论您使用准备好的语句还是一次性查询,它确实没有太大的区别。
@deceze 是对的。但是如果你想使用准备好的语句,请使用这样的东西,
<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) // <== passed array of parameters
{
while ($row = $stmt->fetch())
{
print_r($row);
}
}
?>
就我而言,这不是必须的,但是为了代码的完整性,您最好这样做。这个简单的选择查询(没有分配)将无法攻击。
对于这样的事情,使用准备好的语句而不是直接查询的性能损失实际上是不存在的,因为您以任何一种方式打开连接,并且执行的额外调用是通过同一个连接进行的。
如果您打算仅从表中选择某些字段,则使用 * 进行选择可能会影响性能。