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

gav*_*vin 0 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);


    }
Run Code Online (Sandbox Code Playgroud)

输出:"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;
    }
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*ine 8

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

正如函数名所暗示的那样,mysql_fetch_row期望以数组的形式返回一行,其中结果集中的每一列都有一个元素.

来自PHP文档:

返回值

返回与获取的行对应的数字字符串数组,如果没有更多行,则返回FALSE.

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

正如Ricardo和Fluffeh评论的那样,这个界面已被弃用,你应该使用PDO.在PDO之前,PHP缺乏统一的数据库接口,而且很难在项目中切换数据库.使用PDO可以轻松支持多个数据库,而预处理语句可以使您的代码更安全,防止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
Run Code Online (Sandbox Code Playgroud)