[英]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.