Php - mysql - 返回行数

时间:2015-01-12 12:47:37

标签: php mysql return logic rows

我正在努力获得用户拥有的朋友数量,但我似乎无法让它发挥作用,所以我真的希望你能帮助我。 这是php

$findFriendssql = "select u.firstName, u.id from friends f, user u 
where (f.u_ID1 = '$loggedId' and u.id = f.u_id2) 
or (f.u_id2 = '$loggedId' and u.id = f.u_id1)";


$all_friends_sql = $db->getRows($findFriendssql);

//$number_of_friends = mysql_num_rows($all_friends_sql);
if ($all_friends_sql) {
$number_of_friends = mysql_num_rows($all_friends_sql);
$friends = "";
foreach ($all_friends_sql as $one_post) {
//doing stuff here.

这里是get rows函数

public function getRows($sql) {
    $result = array();
    $table = mysql_query($sql, $this->db_link);
    if (!$table) {
        die("\"$sql\" seems to be an invalid query: " . mysql_error());
    }
    while ($row = mysql_fetch_assoc($table)) {
        array_push($result, $row);
    }

    return $result;
}

无论我尝试什么 - 我得到的错误是num行期望参数1是资源。 提前谢谢你

2 个答案:

答案 0 :(得分:0)

  $findFriendssql = "select u.firstName, u.id from friends f, user u where (f.u_ID1 = '$loggedId' and u.id = f.u_id2) 
or (f.u_id2 = '$loggedId' and u.id = f.u_id1)";


 $all_friends_sql = $db->getRows($findFriendssql);

 //$number_of_friends = mysql_num_rows($all_friends_sql);
 if (count($all_friends_sql)>0) {
 $number_of_friends = mysqli_num_rows($all_friends_sql);
 $friends = "";
 foreach ($all_friends_sql as $one_post) {

答案 1 :(得分:0)

num行应该在此之后立即发生:

$table = mysql_query($sql, $this->db_link);
$totalFirends = mysql_num_rows($table);

使用$table作为输入参数。 $table应该是一种资源。能够使用mysql_num_rows。 您的函数中的以下内容将$table更改为不再是资源。此外,您不需要此代码来了解用户有多少朋友:

    while ($row = mysql_fetch_assoc($table)) {
    array_push($result, $row);
    }

    return $result;
}

此外,如果您只需要该号码,则查询应更改为SELECT COUNT(some-field)

我不知道$loggedId的内容是什么,希望您测试查询返回应该返回的内容。使用示例数据查询的输出是正确的,比如phpmyadmin吗?