2013-05-07 133 views
0

长话短说,我这一步得到:PHP库MySQLi bind_param()混乱

$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文档中用于执行我想要的操作的一小部分代码。所以我找不到任何能显示如何将已准备好的语句的结果并将其移入关联数组的任何内容。有人知道吗?它甚至有可能吗?

+0

首先第一件事情 - 你有你的绑定参数后,执行查询。 - > http://us2.php.net/manual/en/mysqli-stmt.execute.php – Jon 2013-05-07 18:13:18

+0

可能的重复[是否有可能在使用bind \ _param时获取\ _object? (PHP/MySQLi)](http://stackoverflow.com/questions/5287298/is-it-possible-to-fetch-object-while-using-bind-param-php-mysqli) – Barmar 2013-05-07 18:20:18

回答

1

Mysqli有两种查询方式。

您可以使用准备好的语句,您使用bind_param填充占位符,​​执行查询,并使用bind_result接收结果。

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

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

这很烦人,恕我直言。

+0

是的,我会推荐如果可能的话,切换到pdo - 没有理由不这样做,真的。 – sgroves 2013-05-07 18:25:17

+0

谢谢!那么我肯定会切换到PDO。 – Zamphatta 2013-05-07 19:07:10