2011-11-26 94 views
0

我尝试使用此查询:如何获取php mysql查询中的行数?

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

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

回答

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); 

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

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

此外,您可能会对SQL注入敞开大门。你应该学会用PDO做好准备的查询。

2

您的直接问题是您正在使用+而不是.来连接字符串。

并为usernamehash值将需要他们周围的报价,使他们不中断查询:

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

一定要添加适当的错误如图所示manual检查您的通话mysql_query()

另外请确保您知道SQL injection。对所有值使用适当的卫生方法(如mysql_real_escape_string()用于传统的mysql库),或切换到PDO并准备好语句。这样做的

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注入攻击。

相关问题