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是一个数组而不是单个值
它返回一行包含一列,用于$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)