PHP/MySQL 搜索结果。如果只有一个结果,则自动重定向

标签 php mysql

我在 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/

相关文章:

php - 表单提交错误403

php - html 下拉表单发布到 php

mysql - 是否可以在同一个查询中计算两列

php - 如何在子查询中使用 SHOW CREATE TABLE?

php - 在 Nginx 中设置 Wordpress 和 Rails

php - 将输入的日期保存到数据库 php

php - PDO 抛出通知 : Undefined index when using fetchAll in a WHILE loop

php - 在 MySQL LEFT JOIN 显示问题中需要帮助

mysql - scrapy 和 mysql

php - 如果我只执行一个查询,那么使用事务的好处是否足够重要?