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