2014-03-05 95 views
0

對於一個應用程序,我試圖計算總共的朋友數。我想用一個函數做到這一點,但它不會返回任何東西。它告訴我:使用sql計算php的行數

警告:mysqli_query()預計至少2個參數,1給出

但我只需要一個參數。我認爲我完全錯了。

這是函數:

public function GetTotalOfFriends($user_id){ 
    $db = new Db(); 
    $select = "SELECT COUNT FROM friendship WHERE (friendship_recipient_id ='" . $user_id ."' OR friendship_applicant_id = '" . $user_id . "') AND friendship_status = 'accepted'"; 
    $result = $db->conn->query($select); 
    $row = mysqli_query($result); 
    $total = $row[0]; 
    echo $total; 

我試圖把它打印出來這樣:

$friend = new Friendship; 
$numberoffriends = $friend->GetTotalOfFriends($user_id); 

<?php echo $numberoffriends; ?> 
+0

看看http://www.php.net/manual/en/mysqli.query.php 你需要通過一個連接和您的查詢不是你的結果 –

回答

2

你是混合了幾件事情。 $result = $db->conn->query($select);行似乎已經執行了一個查詢,但是您試圖通過將該查詢結果再次傳遞給mysqli_query來繞過數據庫包裝。

除此之外,我認爲你的查詢本身也是錯誤的。 COUNT需要一個參數,指示要計數的字段或值。經常使用COUNT(*),但在某些情況下COUNT('x')可能更有效。您也可以使用特定的字段名稱,COUNT將爲您計算非空值。

您得到的結果是一個mysql_result對象,您需要使用它來獲取查詢結果的實際數據documentation of this objecthere,我建議你仔細閱讀。

一種可能的方式做到這一點是使用這樣的:

$resultArray = $result->fetch_row(); 

這將導致您的查詢的第一個(也是唯一一個)一行。它被表示爲一個數組,只有一個值(因爲你的查詢只返回一列)。您可以獲取該值是這樣的:

return $resultArray[0]; 

你也可以使用任何其他的方法獲取,如果你想以不同的方式您的數據。

+0

我修改了代碼,但現在他說: 類mysqli_result的對象無法轉換爲字符串 –

+1

是的,您需要從結果對象中獲取實際的* data *,但不應該再次調用'mysqli_query',因爲那是給您的方法的過程版本首先是對象。我已經用一些代碼更新了我的答案,更多的解釋和有用的鏈接。 – GolezTrol

+0

感謝您的信息,它現在正在工作! –