2013-12-13 42 views
0

什麼是執行方式來獲取mysqli OOP中受影響的行數。我正在使用msqli OOP創建crud類。我得到int -1。後續代碼var_dump($語句)的如何獲取mysqli OOP中affected_rows的數量? Mysqli OOP affected_rows返回-1

$query = "SELECT * FROM `sk_courses`"; 
    $stmt = $this->_mysqli->prepare($query); 
    $stmt->execute(); 
    $stmt->affected_rows ; 

    var_dump($stmt->affected_rows); // output is int -1 

輸出是:

object(mysqli_stmt)[7] 
    public 'affected_rows' => null 
    public 'insert_id' => null 
    public 'num_rows' => null 
    public 'param_count' => null 
    public 'field_count' => null 
    public 'errno' => null 
    public 'error' => null 
    public 'error_list' => null 
    public 'sqlstate' => null 
    public 'id' => null 
+0

這很簡單。請閱讀**手冊頁**瞭解您正在使用的功能。 –

+0

這是一個恥辱,upvote這樣的問題。對編程的藝術感到羞恥。 –

+0

重複的http://stackoverflow.com/questions/1018336/getting-row-count-for-a-table-in-mysql –

回答

2

這是理解mysqli_stmt文檔,其中包括下面的每個功能頁面的問題。

A SELECT查詢不會影響任何行。

查看手冊[php docs for mysqli affected-rows]。在返回值下:

-1 indicates that the query returned an error. 

但是,這實際上是一個混合的問題。

要獲取的行數,請嘗試:

$query = "SELECT * FROM `sk_courses`";  // or 
$query = "SELECT lastName, firstName, ... FROM `sk_courses`"; 

$stmt = $mysqli->prepare($query); 
$stmt->execute(); 
$stmt->store_result();      // without this line, num_rows = 0 
print $stmt->num_rows; 

然後,如果有興趣在結果集中,添加:

// bind result variables. next statement 'binds' them in the order of the select query 
$stmt->bind_result($last, $first, ....); // must have variable for EACH column 

while ($stmt->fetch()) { 
    printf ("%s (%s)\n", $first, $last); 
} 
+0

感謝您的回覆。我在2013年12月5個月前解決了這個問題:) – Zohaib

+0

@Zohaib對於有類似問題的其他搜索者提供答案是有幫助的。無論是您的解決方案還是其他人的解決方案。在這裏,你可以回答你自己的問題,以協助其他開發者。 – David

+0

是的,這就是爲什麼我批准並答覆這個答案。 :) – Zohaib