繁体   English   中英

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

[英]my SELECT COUNT query returns an array not an integer

我在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);


    }

输出:“数组([0] => 1)”。 评论说它应该是一个整数。 任何帮助,不胜感激!

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

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是一个数组而不是单个值

它返回一行一行的列,使用$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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM