PHP MySQLi bind_param()混淆

PHP MySQLi bind_param()混淆,php,arrays,mysqli,Php,Arrays,Mysqli,长话短说,我已经走了这么远: $stmt = $mysqli->prepare($sql); $stmt->bind_param("s",$_GET['slug']); 但我完全搞不懂如何将结果放入关联数组中。我试过了 $stmt = $mysqli->prepare($sql); $result = $stmt->bind_param("s",$_GET['slug']); while ($row = $result->fetch_assoc()) {

长话短说,我已经走了这么远:

$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s",$_GET['slug']);
但我完全搞不懂如何将结果放入关联数组中。我试过了

$stmt = $mysqli->prepare($sql);
$result = $stmt->bind_param("s",$_GET['slug']);
while ($row = $result->fetch_assoc()) {
    printf ("%s (%s)\n", $row["website_name"], $row["subheading"]);
}

我不认为我可以使用
$mysqli->query($query)
而不是一个准备好的语句,因为这似乎会让我面临SQL注入攻击。然而,这是PHP文档中用来完成我想做的事情的代码。因此,我找不到任何显示如何获取准备语句的结果并将其移动到关联数组中的内容。有人知道吗?甚至可能吗?

Mysqli有两种查询方法

您可以使用准备好的语句,其中使用
bind_param
填充占位符,
execute()
执行查询,
bind_result
接收结果

或者可以使用带有插值变量的语句,比如mysql。然后可以使用
fetch\u assoc
将结果接收到关联数组中

我认为你不能把这两种方法混为一谈。您不能绑定参数,然后使用fetch函数来接收结果。如果你想要这种能力,可以使用PDO


这很烦人,IMHO。

Mysqli有两种方法可以从预先准备好的语句中获得结果


第一件事-绑定参数后必须执行查询。-->是的,如果可能的话,我建议切换到pdo-没有理由不这样做,真的。谢谢!那我肯定要换成PDO了。