PHP MySQLi bind_param()混乱

时间:2013-05-07 18:10:42

标签: 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()) {
    printf ("%s (%s)\n", $row["website_name"], $row["subheading"]);
}

我认为我不能使用$mysqli->query($query)而不是准备好的声明,因为这似乎会让我对SQL注入攻击持开放态度。然而,这是PHP文档中用于执行我想要做的事情的一点代码。所以我找不到任何显示如何获取预准备语句的结果并将其移动到关联数组中的内容。有人知道吗?它甚至可能吗?

2 个答案:

答案 0 :(得分:1)

Mysqli有两种查询方式。

您可以使用预准备语句,使用bind_param填写占位符,execute()执行查询,bind_result接收结果。

或者你可以使用插值变量的语句,比如mysql。然后,您可以使用fetch_assoc将结果接收到关联数组中。

我认为你不能混用这两种方法。您无法绑定参数,然后使用获取功能来接收结果。如果您想要这种能力,请改用PDO。

这很烦人,恕我直言。

答案 1 :(得分:0)

Mysqli有两种方法可以从准备好的声明中获得结果。