2009-07-02 38 views
2

PHP的MySQLi功能非常棒。PHP Mysqli fetch_assoc

準備好的語句非常適合在查詢中注入參數。

但是,如果您使用語句,看起來您沒有權限訪問fetch_assoc功能。您必須手動綁定所有結果。這意味着我的SQL查詢必須列出所有字段,然後在獲取結果時(使用bind_result),我必須提前列出所有變量。這可能會變得非常煩人和浪費時間。

是否有替代方案?

感謝

回答

1

MySQLi確實提供了處理此問題的方法,請參閱result_metadata函數。

我寫了一個類,允許無障礙的參數化的MySQLi查詢 - 下載和基本使用信息,請訪問:http://www.robpoyntz.com/blog/?p=191

+0

如果您有興趣,我已經使用相同的接口創建了一個PDO版本,所以替代上面的MySQLi代碼。有趣的是,PDO版本似乎比MySQLi版本快了近50%。源代碼可在此處找到:http://www.robpoyntz.com/blog/?p=260 – 2009-07-21 12:36:17

4

是的,這就是所謂的PDO,通常首選的MySQLi。它提供具有常規提取選項的語句,並不強制您顯式綁定所有參數。典型的查詢可能如下所示:

$stmt = $db->prepare("SELECT * FROM foo WHERE a = ?"); 
$stmt->execute(array($a)); 

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

PDO非常靈活,所以它也可以以其他方式使用。手冊中有很多很棒的例子。看一看!

+1

不錯,PDO看起來比使用mysqli的用於準備一個痛苦的有點少語句:) – Jason 2009-07-03 07:27:40