php
  • mysqli
  • mysql-num-rows
  • 2012-04-13 117 views 0 likes 
    0

    我的num_rows回來爲0,我試着用幾種方式調用它,但我卡住了。這裏是我的代碼:num_rows爲0時,它應該> 0爲PHP mysqli代碼

    $conn = new mysqli($dbserver, "dbuser", "dbpass", $dbname); 
    
        // get the data 
        $sql = 'SELECT AT.activityName, AT.createdOn 
          FROM userActivity UA, users U, activityType AT 
          WHERE U.userId = UA.userId 
          and AT.activityType = UA.activityType 
          and U.username = ? 
          order by AT.createdOn';    
        $stmt = $conn->stmt_init(); 
        $stmt->prepare($sql); 
        $stmt->bind_param('s', $requestedUsername); 
        $stmt->bind_result($activityName, $createdOn); 
        $stmt->execute(); 
    
        // display the data 
        $numrows = $stmt->num_rows; 
        $result=array("user activity report for: " . $requestedUsername . " with " . $numrows . " rows:"); 
        $result[]="Created On --- Activity Name"; 
        while ($stmt->fetch()) 
        { 
         $msg = " " . $createdOn . " --- " . $activityName . " "; 
         $result[] = $msg; 
        } 
    
        $stmt->close(); 
    

    找到了多行,並且抓取循環處理它們就好了。有什麼建議可以讓我獲得查詢中返回的行數?

    建議非常感謝。提前致謝。

    回答

    2

    你需要調用$stmt->store_result()第一,只是$stmt->num_rows之前。

    +0

    完美。謝謝。 – jpporterVA 2012-04-13 23:51:19

    1

    嘗試在調用num_rows;之前添加它。

    $stmt->store_result();

    +1

    對於記錄我沒有複製你的答案:)之前,你的回答說了一些關於調用'num_rows'作爲一種方法,而不是一個成員。然後在我已經回答後編輯它。不要被冒犯! – webbiedave 2012-04-13 23:34:33

    0

    我不知道這是否會修復它,但你不能bind_results直到execute查詢,如果我沒有弄錯。

    而且while循環:

    while ($stmt->fetch()) 
    { 
        $msg = " " . $createdOn . " --- " . $activityName . " "; 
        $result[] = $msg; 
    } 
    

    你將失去​​所有的$msg變量與循環的每次迭代中,除了最後一個設置,因爲你要麼需要做$msg .=或使$msg數組$msg[] =

    0
    $stmt->store_result(); 
    $numrows = $stmt->num_rows; 
    

    檢查:http://php.net/manual/en/mysqli-result.num-rows.php,這 http://php.net/manual/en/mysqli-stmt.num-rows.php

    相關問題