2013-07-31 528 views
3

即時嘗試使用mysqli與bind_result,但我得到的是空值。我的$stmt如何使用mysqli bind_result

行數大於0,所以我確實有一些數據。

我真的不知道應該進入bind_result

我在手動http://php.net/manual/en/mysqli-stmt.bind-result.php

讀什麼價值,他們不應該解釋我放什麼bind_result

我應該在那裏列名?如果是,作爲字符串?我如何得到我想要的價值?

這裏是我的代碼感謝幫助:

$sql = "SELECT * FROM comments WHERE workout_name = ? AND user = ?"; 

    $stmt = $mysqli->prepare($sql) or trigger_error($mysqli->error."[$sql]"); 

    $stmt->bind_param('ss', $workout_name, $user); 

    $workout_name = "rytg"; 
    $user = "tomer"; 

    $stmt->execute(); 

    $stmt->store_result(); 

    $stmt->bind_result($comment, $commented_user); 

    if($stmt->num_rows > 0) 
    { 
    $response["workouts"] = array(); 

     while ($stmt->fetch()) 
    { 
     // temp user array 
     $workouts = array(); 

     $workouts["comment"] = $comment; 
     $workouts["user"] = $commented_user; 

     // push single product into final response array 
     array_push($response["workouts"], $workouts); 
    } 

}

+1

您有**兩次**多於測試唯一bind_result所需的代碼。 **這不是要走的路**。你妨礙自己,添加一些容易出錯的鱈魚來掩蓋測試結果。 –

+0

@YourCommonSense,對不起,我不瞭解你。 – dasdasd

回答

2

你唯一的問題是不足錯誤報告

error_reporting(E_ALL); 
ini_set('display_errors',1); 

就在你的代碼的頂部添加這些行,你會立即通知你的代碼的確切問題。

請注意,在生產服務器上,您必須關閉顯示錯誤並登錄

+0

謝謝你,我從錯誤代碼中發現我的問題:) – dasdasd

+0

這就是錯誤報告如此重要的原因。有無數的案例,錯誤信息會爲您節省大量時間甚至是金錢。 –

-2

我沒有工作的PHP安裝在我旁邊的那一刻,讓我無法驗證,但我相信你可能要結合這兩個參數,並導致執行查詢之前,像這樣:

$workout_name = "rytg"; 
$user = "tomer"; 

$stmt = $mysqli->prepare($sql) or trigger_error($mysqli->error."[$sql]"); 
$stmt->bind_param('ss', $workout_name, $user); 
$stmt->bind_result($comment, $commented_user); 
$stmt->execute(); 

我不是太肯定store_result()無論是。我不記得在檢索結果時必須使用它,所以你可能想嘗試在沒有它的情況下運行你的代碼,並看看會發生什麼。

+0

你不能這樣做。它寫在官方文件中。 – dasdasd