【发布时间】:2018-09-04 17:46:06
【问题描述】:
对 PHP 和 Mysql 非常陌生,我正在尝试帮助儿子完成一个需要提交带有复选框的表单的项目,该复选框查询数据库表中名为“item_id”的特定列,其中包含增量整数。
我们已经成功创建了一个带有名为“类别”的复选框并使用如下内爆的数组:
$categories = implode(",",$_GET['category']);
我们可以使用这个查询数据库
$data = mysql_query("SELECT * FROM clients
WHERE upper($field) LIKE'%$find%' AND item_id IN ($categories)
ORDER BY item_updated DESC LIMIT $offset, $rowsperpage;");
这很好用,我们可以回显看起来运行良好的输出,并且根据选择的复选框包含多个类别。
我们还有一个计数查询来生成行计数并生成一些我们通过教程脚本实现的分页,该脚本也可以工作。
我们遇到的问题是,如果所有记录都从数据库返回,分页链接工作正常,但是为了对来自 implode 的多个类别的搜索结果进行分页,我从 echo'd 调用脚本<a href= 再次与所有适当的搜索字符串链接,但是当我尝试包含类别时,它们没有被识别,因为我假设我正在尝试内爆一个不存在的数组。
即如果我的特定分页链接的代码看起来像
echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1&find=$find&category=$categories'><<</a> ";
例如,链接的结果类别部分看起来像 category=5,2,当单击时,不会返回任何结果。我认为这是因为我试图内爆 5,2 而不是表单提交的数组。
如果有人能阐明我需要做些什么才能使这项工作正常进行,将不胜感激。不确定我是否需要另一个没有内爆的字符串开始或使用 arrayslice 等来解决它。在没有成功的情况下,尽可能多地阅读。
非常感谢。
【问题讨论】:
-
您的代码容易受到 SQL 注入攻击,并使用已弃用的
mysql_*函数。您应该改用准备好的语句。 -
调查准备好的语句并减轻注入攻击。
标签: php arrays pagination