【问题标题】:How to add a while loop to a variable to display and if - else if result?如何将while循环添加到要显示的变量以及if - else if结果?
【发布时间】:2017-05-29 22:52:29
【问题描述】:

我有一个if - else if 语句根据用户输入从数据库更改查询,并且我在while 循环一中显示所有if - else if 语句的相应结果但是我如何将while 循环放入$output 等变量,然后在满足 if 条件时回显?

<?php include 'db_connect.php';

$job_title = $_POST['job_title'];
$company_name = $_POST['company_name'];
$salary = $_POST['salary'];

if($job_title !== " "){ 
$sql = $dbh->prepare("SELECT * FROM jobs_list WHERE jobTitle LIKE :job_title");
 $sql->bindValue(':job_title', '%' . $job_title . '%', PDO::PARAM_INT);
 if($sql->execute()) {
       $sql->setFetchMode(PDO::FETCH_ASSOC);
    } 

 // while loop here //

} else if($company_name !== " ") {
$sql = $dbh->prepare("SELECT * FROM jobs_list WHERE company_name LIKE :company_name");
  $sql->bindValue(':company_name', '%' . $company_name . '%', PDO::PARAM_INT);
    if($sql->execute()) {
       $sql->setFetchMode(PDO::FETCH_ASSOC);
    }

  // while loop here //

}else if($salary !== " ") {
$sql = $dbh->prepare("SELECT * FROM jobs_list WHERE salary_info LIKE :salary");
  $sql->bindValue(':salary', '%' . $salary . '%', PDO::PARAM_INT);
    if($sql->execute()) {
       $sql->setFetchMode(PDO::FETCH_ASSOC);
    }

  // while loop here //    

  } ?> 

【问题讨论】:

    标签: php if-statement while-loop


    【解决方案1】:

    您可以使用PDOStatement::fetchAll 将整个查询结果保存在一个变量中。稍后您可以根据您的要求在if-else 块之外使用查询结果。

    <?php
        include 'db_connect.php';
    
        $job_title = $_POST['job_title'];
        $company_name = $_POST['company_name'];
        $salary = $_POST['salary'];
    
        $output = "";
        if($job_title !== " "){ 
            $sql = $dbh->prepare("SELECT * FROM jobs_list WHERE jobTitle LIKE :job_title");
            $sql->bindValue(':job_title', '%' . $job_title . '%', PDO::PARAM_STR);
            if($sql->execute()){
                $output = $sql->fetchAll();
            } 
        } else if($company_name !== " ") {
            $sql = $dbh->prepare("SELECT * FROM jobs_list WHERE company_name LIKE :company_name");
            $sql->bindValue(':company_name', '%' . $company_name . '%', PDO::PARAM_STR);
            if($sql->execute()) {
                $output = $sql->fetchAll();
            }
        }else if($salary !== " ") {
            $sql = $dbh->prepare("SELECT * FROM jobs_list WHERE salary_info LIKE :salary");
            $sql->bindValue(':salary', '%' . $salary . '%', PDO::PARAM_INT);
            if($sql->execute()) {
               $output = $sql->fetchAll();
            }
        } 
    
        // Now you can use that query result `$output` as per your requirement.
    ?>
    

    另外,我更改了 -&gt;bindValue() 方法中的数据类型,这是因为我假设 jobTitlecompany_name 是字符串数据类型,而 salary em> 是整数类型。如果不是这种情况,那么您需要相应地更改 -&gt;bindValue() 方法中的数据类型。

    这是参考:


    旁注:如果要查看整个查询结果结构,请var_dump($output);

    【讨论】:

      【解决方案2】:

      在所有 if-else 语句结束后,您可以只使用一次 while 循环。

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 1970-01-01
        • 2015-11-08
        • 1970-01-01
        • 1970-01-01
        • 2020-08-14
        • 2016-12-24
        • 2012-06-18
        • 1970-01-01
        相关资源
        最近更新 更多