我编码了这两个代码块,但它们似乎也是这样做的。我不明白你何时应该使用其中的每一个。
$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();
我不明白这些差异
答案 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)