如何获取php mysql查询中的行数?

时间:2011-11-26 22:37:46

标签: php mysql

我试图使用此查询:

mysql_query("SELECT COUNT(*) FROM Users WHERE (Username=" + $username + "AND Hash=" + $hash + ")")

返回php脚本中的身份验证行数。但这不会返回一个int?如何使用返回值来获取行数?

4 个答案:

答案 0 :(得分:2)

您可以使用mysql_fetch_array从结果中获取行:

$result = mysql_query("SELECT COUNT(*) FROM Users WHERE ...") or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row[0];

或者,由于您只需要获取单个值,因此您可以使用mysql_result更简单地执行此操作:

$result = mysql_query("SELECT COUNT(*) FROM Users WHERE ...") or die(mysql_error());
echo mysql_result($result, 0);

我还建议您查看参数化查询,而不是使用字符串连接来构建SQL查询。

答案 1 :(得分:2)

您当前的问题是您使用+代替.来连接字符串。

usernamehash的值需要在它们周围引用,以便它们不会破坏查询:

mysql_query("SELECT COUNT(*) FROM Users WHERE (Username='" . $username . "' AND Hash='" + $hash . "')")

请确保为mysql_query()来电添加正确的错误检查,如manual所示。

另外请确保您了解SQL injection。对于所有值,使用库的适当卫生方法(如mysql_real_escape_string()作为经典mysql库),或切换到PDO和预处理语句。

答案 2 :(得分:0)

$row = mysql_fetch_row($your_resource);
echo (int)($row[0]);

此外,您可能对SQL注入持开放态度。你应该学会用PDO做好准备好的查询。

答案 3 :(得分:0)

这样做的一种方法是:

$result = mysql_query("SELECT username FROM Users WHERE (Username='" . $username . "' AND Hash='" . $hash . "') LIMIT 1");
$returned = mysql_numrows($result);
echo $returned ." users";

但是,您可以根据您对结果集的操作进一步优化查询。

看看http://php.net/manual/en/function.mysql-num-rows.php 以及http://www.php.net/manual/en/function.mysql-fetch-array.php和其他mysql_fetch_ *函数

另外,请确保正确格式化查询。查看mysql_real_escape_strings以逃避用户输入以避免SQL注入攻击。