我尝试使用此查询:如何获取php mysql查询中的行数?
mysql_query("SELECT COUNT(*) FROM Users WHERE (Username=" + $username + "AND Hash=" + $hash + ")")
返回的行数进行身份验证的PHP脚本。但这不会返回一个int?我如何使用返回值来获取行数?
我尝试使用此查询:如何获取php mysql查询中的行数?
mysql_query("SELECT COUNT(*) FROM Users WHERE (Username=" + $username + "AND Hash=" + $hash + ")")
返回的行数进行身份验证的PHP脚本。但这不会返回一个int?我如何使用返回值来获取行数?
您可以使用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查询。
$row = mysql_fetch_row($your_resource);
echo (int)($row[0]);
此外,您可能会对SQL注入敞开大门。你应该学会用PDO做好准备的查询。
您的直接问题是您正在使用+
而不是.
来连接字符串。
并为username
和hash
值将需要他们周围的报价,使他们不中断查询:
mysql_query("SELECT COUNT(*) FROM Users WHERE (Username='" . $username . "' AND Hash='" + $hash . "')")
一定要添加适当的错误如图所示manual检查您的通话mysql_query()
。
另外请确保您知道SQL injection。对所有值使用适当的卫生方法(如mysql_real_escape_string()
用于传统的mysql库),或切换到PDO并准备好语句。这样做的
一个方法是:
$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注入攻击。