我在 PHP 中使用 While 循环进行多个 SQL 查询,用于搜索表单。
总共有 3 个代码块,每个代码块都是从不同的表中选择的,并且在我使用的 while 循环之前
if(mysql_num_rows($rs) > 0) {
...show results here
}
我希望这样如果 3 block 代码只返回一个结果,它会自动重定向到另一页。
例如,我正在搜索客户、联系人和发票。所以它们是我拥有的 3 个不同的代码/查询 block 。
如果我搜索 A 公司,并且客户查询中返回 1 条记录,联系人和发票中返回 0 条记录,则它应该重定向到客户页面。但是,如果返回 2 条记录,它应该只显示搜索结果。
对于客户、联系人和发票也是如此
最佳答案
要重定向到新页面,请使用header()
:
header("Location: /url/to/company/page?id=$companyId");
您的条件需要处理至少三种情况:无结果、单个结果和多个结果:
switch (mysql_num_rows($rs)) {
case 0:
$this->noResultsFound();
break;
case 1:
header("Location: /url/to/company/page?id=" . $rs[0]['companyId']);
break;
default:
$this->showResults($rs);
break;
}
正如评论中所述,mysql_*
函数已被弃用;它们已被更好、更安全的替代品所取代。考虑调查 PDO 的好处.
在生产代码中使用 die()
语句通常是不好的做法。然而,罕见的异常(exception)之一是与 header()
的使用结合使用。这可能并不明显,但是当您使用 header()
进行重定向时,脚本的其余部分将在带有重定向指令的 HTTP header 发送到浏览器之前继续运行。在代码结构不良的情况下,这可能会导致意外结果。
要避免该问题,请在 header()
行之后立即插入 die()
语句。
关于PHP/MySQL 搜索结果。如果只有一个结果,则自动重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30101810/