这两个代码有什么区别

时间:2016-05-23 18:44:18

标签: php

我编码了这两个代码块,但它们似乎也是这样做的。我不明白你何时应该使用其中的每一个。

$query= $db->query("SELECT * FROM forum_table WHERE forum_id = '$id'");

$sql="SELECT * FROM forum_table WHERE forum_id = '$id'";
if ($query = $db->prepare($sql))
$query->execute();

我不明白这些差异

2 个答案:

答案 0 :(得分:0)

嗯,如果是

$query= $db->query("SELECT * FROM forum_table WHERE forum_id = '$id'");

这是非常简单的,所有人都知道,简单的查询直接执行,没有额外的魔力。

$sql="SELECT * FROM forum_table WHERE forum_id = '$id'";
if ($query = $db->prepare($sql))
$query->execute();

虽然在你的第二段代码中你使用了相同的查询,但是你在执行之前准备好了查询(你没有采用正确的方式,也就是你没有让占位符将参数绑定到它,这是什么是使用准备好的陈述的推荐和有目的的方式。), 通过在准备好的语句中创建占位符来为它绑定参数,稍后准备实际在实际执行查询之前制作模板,这在很多方面有所帮助。 准备语句减少了解析时间,因为查询的准备只进行一次(尽管语句多次执行)。 注意:最佳做法是将参数绑定到prepare语句中,以便在查询必须使用不同参数运行多次时。 绑定参数最小化了服务器的带宽,因为您每次只需要发送参数,而不是整个查询。 最后但并非最不重要的是,如果参数绑定到它,Prepared语句对SQL注入非常有用。

答案 1 :(得分:-1)

首先,这两个陈述完全相同,所以几乎没有区别。

第二个区块有一些非常不同的暗示。

prepared statements

至于何时使用其中一个..总是使用预备语句