php - 如何在 PHP 中使用 OR 条件正确的 MySqli SELECT?

标签 php mysql mysqli

我正在尝试显示作为我的查询的所有数据,但不知何故,我不知道如何使用准备好的 mysqli 来做到这一点

这是我的代码:

<?php

include '../session.php';
require_once 'config.php';
include 'header.php';

    $master = 'MASTER';
    $chck = 'CHCK';
    $second_engineer = '2E';
    $second_mate = '2M';
    $third_engineer = '3E';
    $third_mate = '3M';
    $ce = 'CE';
    $bsn = 'BSN';
    $ab = 'AB';
    $olr = 'OLR';
    $dcdt = 'DCDT';
    $egdt = 'EGDT';
    $cook = 'COOK';
    $messman = 'MESSMN';
    $crew_status = 'PENDING FOR LINEUP';
    $query = "SELECT * FROM `crew_info` WHERE `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? OR `crew_rank` = ? AND `crew_status` = ?";
    $stmt = mysqli_prepare($conn, $query);
    mysqli_stmt_bind_param($stmt, 'sssssssssssssss', $crew_status, $master, $chck, $second_engineer, $second_mate, $third_engineer, $third_mate, $ce, $bsn, $ab, $olr, $dcdt, $egdt, $cook, $messman);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt, $id, $first_name, $middle_name, $last_name, $age, $month, $day, $year, $birth_place, $gender, $martial_status, $religion, $nationality, $email_address, $address_1, $address_2, $course, $school_graduated, $remarks, $note, $date_added, $crew_status, $crew_rank, $image_name, $updated_photo, $passport_registration, $passport_expiration);



?>

<table>
    <tr>
        <td>FULL NAME</td>
        <td>RANK</td>
        <td>STATUS</td>
    </tr>
    <tr>
        <?php

        while(mysqli_stmt_fetch($stmt)) {
            echo "<tr>";
            echo "<td>".sprintf("%s%s%s", $first_name, $middle_name, $last_name)."</td>";
            echo "<td>".sprintf("%s", $crew_rank)."</td>";
            echo "<td>".sprintf("%s", $crew_status)."</td>";
            echo '</tr>';
        }
        ?>
    </tr>
</table>

这段代码没有给我输出。只有普通页面

最佳答案

在编程中,KISS 原则适用。您的代码可以大大简化

$query = "SELECT * FROM `crew_info` WHERE `crew_rank` IN ".
         "('MASTER','CHCK','2M','3E','3M','CE','BSN','AB','OLR','DCDT','EGDT','COOK','MESSMN')
        AND `crew_status` = 'PENDING FOR LINEUP'";

你在这里甚至不需要准备好的语句,因为你只使用常量。

如果您继续得到一个空白页,您是否考虑过您的数据库中可能没有任何匹配行的可能性?请将上面的复制粘贴到mysql控制台并显示结果。

关于php - 如何在 PHP 中使用 OR 条件正确的 MySqli SELECT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38605673/

相关文章:

php - 检查数组中的每个项目到字符串中,并将这些项目与一些 html 一起替换

php - 如何使用 Facebook API 获得有关新 friend 和已删除 friend 的通知?

java - 无法在 IntelliJ IDEA 中连接到 MySQL

mysql - 关联这些表的正确方法

mysql - postgresql查询到mysql

php - MYSQL PHP 变量在 WHERE IN() CLAUSE 中不起作用

php - 嵌套的 DOM XPath?

php - 从一个表中选择匹配值到另一个表中的多个值

php - laravel 在 Controller 中的所有方法中共享变量

php - sql使用偏移行获取没有足够的结果