2012-08-08 101 views
1

我想從表中顯示行,但它不工作,它不迴應任何東西。MySQLi - 獲取數組和準備語句

$query = "SELECT * FROM table ORDER BY date DESC LIMIT ?, 10"; 
$stmt = $mysqli->stmt_init(); 
if ($stmt->prepare($query)) { 

    $stmt->bind_param("i", $row_start); 
    $stmt->execute(); 
    $stmt->bind_result($result); 
    $stmt->fetch(); 
    $stmt->close(); 
} 
while($row = mysqli_fetch_array($result)) { 
    echo $row['title']; 
} 

我有舊的MySQL分機的代碼,它的工作原理。試圖獲得與mysqli相同的結果。

+3

可笑的是,'fetch_array()'不適用於預處理語句。你已經使用'bind_result()',這使得整個過程變得更加笨拙。這是我儘可能在MySQLi上使用PDO的主要原因之一。 – DaveRandom 2012-08-08 13:21:18

+1

@DaveRandom我認爲MySQLi是原始分機的改進版...不知道有這樣的限制。我想我必須轉向PDO。 – xperator 2012-08-08 14:15:31

回答

0

閱讀以下鏈接: -

Mysqli abstraction, fetching arrays from prepared statements

的call_user_func_array(...)函數只是調用與定數組中的$查詢對象在bindParam或bind_result方法,就好像你提供的各數組的元素作爲方法參數。

您可能需要使用下面的代碼檢查您遇到問題的SQL語句。爲了使它完全可測試,我重寫了一下,因爲原始代碼依賴於抽象層中的語句類。