2013-05-07 57 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