您好,我也是 php 和 mysql 的新手,由于用户进行的搜索,我想计算成员(member)数量。但是,mysql_num_rows
不起作用。
mysql_num_rows(mysql_query("SELECT * FROM members WHERE $title LIKE '%$_POST[search]%' LIMIT $start,$member_number"));
它说“mysql_num_rows():提供的参数不是...中的有效 MySQL 结果资源”
注意: $title 是一个选择菜单,用户可以选择要搜索的位置。如您所知,LIMIT 是页面中显示的成员数量。
还有 $start= ($page-1)*$member_number;
以设置该页面中的第一个条目。我认为问题就在这里,但我无法解决。 :(
最佳答案
您的查询可能有错误,在这种情况下 mysql_query 将返回 false
。
因此,您不应该像这样对命令进行分组。这样做:
$result = mysql_query("...");
if (!$result)
{ echo mysql_error(); die(); } // or some other error handling method
// like, a generic error message on a public site
$count = mysql_num_rows($result);
此外,您有多个 SQL injection vulnerabilities在你的代码中。您需要清理传入的 $search
变量:
$search = mysql_real_escape_string($_POST["search"]);
... mysql_query(".... WHERE $title LIKE '%$search%'");
如果 $start
和 $end
来自外部,您还需要在将它们用于 LIMIT
子句之前对其进行清理。你不能在这里使用 mysql_real_escape_string()
,因为它们是数值。使用 intval()
确保它们只包含数字。
从卫生的角度来看,使用动态列名也很困难:您也无法在此处应用 mysql_real_escape_string()
。理想情况下,您应该与允许的列名列表进行比较以防止注入(inject)。
关于php - 使用 mysql_query 在 PHP 中出现 mysql_num_rows 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5529420/