我的SELECT COUNT查询返回的数组不是整数

时间:2012-07-23 00:28:25

标签: php mysql select count

我在Stacked上看过其他类似的问题,甚至使用了一个例子,我将在下面发帖说它应该返回一个整数,但我仍然得到一个数组......

那么..为什么我得到一个数组,我怎么得到一个整数?

function user_exists($username){
    $result = mysql_query("SELECT COUNT(username) FROM logins");

    // Verify it worked
    if (!$result) echo mysql_error();

    $row = mysql_fetch_row($result);

    // Should show you an integer result.
    print_r($row);


    }

输出:“Array([0] => 1)”。评论说它应该是一个整数。 任何帮助非常感谢!

上面的代码仅用于测试目的,Iam实际上试图测试SELECT COUNT的值并在函数中返回一个true(或false)布尔值:

function user_exists($username){
    $query = mysql_query("SELECT COUNT (username) FROM `logins` WHERE `username`='$username'");
    return (mysql_result($query, 0)==1) ? true: false;
    }

但$ query var是一个数组而不是单个值

1 个答案:

答案 0 :(得分:8)

它返回一行包含一列,使用$row[0]从第一列获取值。

正如函数名所暗示的那样,mysql_fetch_row应该以数组的形式返回一行,并为结果集中的每一列提供一个元素。

来自PHP docs

  

返回值

     

返回与获取的行对应的数字字符串数组,如果没有其他行,则返回FALSE。

     

mysql_fetch_row()从与指定结果标识符关联的结果中提取一行数据。该行作为数组返回。每个结果列都存储在一个数组偏移量中,从偏移量0开始。

正如Ricardo和Fluffeh评论的那样,这个界面已被弃用,你应该使用PDO。在PDO之前,PHP缺乏统一的数据库接口,而且很难在项目中切换数据库。使用PDO可以轻松支持多个数据库,prepared statements可以使您的代码更安全,防止SQL注入攻击。

[更新]

  

谢谢,也许mysql_row不是最好的方法,我只是用它来测试。我实际上是试图将结果插入一个mysql_result,作为一个数字,但它是一个数组,所以我相信SELECT COUNT最初返回一个数组,当我认为它是为了返回一个整数。我真的希望$ result = mysql_query(“SELECT COUNT”)为单个值..嗯...?

如果您确实想要将值作为整数获取,可以改为使用它:

// $row = mysql_fetch_row($result);
$row = mysql_result($result, 0, 0); // first row, first column