用sql计算php中的行数

时间:2014-03-05 15:34:57

标签: php mysql mysqli

对于一个应用程序,我试图计算朋友的总数。我想用一个函数做这个,但它没有返回任何东西。它告诉我这个:

  

警告: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; ?>

1 个答案:

答案 0 :(得分: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];

如果您想以不同的方式使用数据,也可以使用任何其他获取方法。