0

我已经查看了有关 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)”。评论说它应该是一个整数。非常感谢任何帮助!

上面的代码仅用于测试目的,我实际上是在尝试测试 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 是一个数组而不是单个值

4

1 回答 1

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
于 2012-07-23T00:31:44.463 回答