2016-07-27 23 views
2

右出力を表示しません。 querymysqlのクエリは<code>crew_status</code>が<code>PENDING FOR LINEUP</code>ですが、私は今、それが表示さ<code>query</code>ですべてここ<code>database</code></p> <p>である<code>data</code>が私のすべてのデータが表示されます、私はこの<code>mysqli</code>クエリを持って

<?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); 



?> 

誰かが問題を伝えることができますか?

<?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>'; 
    } 
    ?> 
+0

()内のcrew_rankのすべてのOR条件をカバーし、 – user3782114

答えて

3

()をごorをラップし、この試してみてください。そして、左の条件が計算されることはありません、これらのORの試合の1つが、()なければ

SELECT * 
FROM `crew_info` 
WHERE (
    `crew_rank` = 'MASTER' 
    OR `crew_rank` = 'CHCK' 
    OR `crew_rank` = 'MESSMN' 
    OR `crew_rank` = '2E' 
    OR `crew_rank` = '2M' 
    OR `crew_rank` = 'COOK' 
    OR `crew_rank` = 'OLR' 
    OR `crew_rank` = 'AB' 
    OR `crew_rank` = '3E' 
    OR `crew_rank` = '3M') 
AND `crew_status` = 'PENDING FOR LINEUP' 

を。

この参照:

true || false && false = true 
(true || false) && false = false 

をそして、私はあなたがより良いようINの代わりORを使用したいと思う:編集

SELECT * 
FROM `crew_info` 
WHERE 
    `crew_rank` IN ('MASTER','CHCK','MESSMN','2E','2M','COOK','OLR','AB','3E','3M') 
AND `crew_status` = 'PENDING FOR LINEUP' 

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 = ? 
+0

をチェックしてください。これは私に説明できますか?なぜ私のクエリが正しい出力を表示せず、あなたの出力が正しい出力を表示するのですか? –

+0

'mysqli prepared'でこれを行う方法は? –

+0

@aronpascua [this](http://php.net/manual/zh/mysqli.prepare.php)を意味しますか? – Blank

1

あなたの質問にいくつか変更があります:

SELECT * FROM `crew_info` WHERE (`crew_rank` = 'MASTER' OR `crew_rank` = 'CHCK' OR `crew_rank` = 'MESSMN' OR `crew_rank` = '2E' OR `crew_rank` = '2M' OR `crew_rank` = 'COOK' OR `crew_rank` = 'OLR' OR `crew_rank` = 'AB' OR `crew_rank` = '3E' OR `crew_rank` = '3M') AND (`crew_status` = 'PENDING FOR LINEUP') 

希望さえあれば幸いです。

0

ANDとORはあいまいです。

(A AND B) OR C 

または

A AND (B OR C) 

物事をクリアするには、いくつかの括弧を追加します:

SELECT * FROM `crew_info` WHERE (`crew_rank` = 'MASTER' OR `crew_rank` = 'CHCK' OR `crew_rank` = 'MESSMN' OR `crew_rank` = '2E' OR `crew_rank` = '2M' OR `crew_rank` = 'COOK' OR `crew_rank` = 'OLR' OR `crew_rank` = 'AB' OR `crew_rank` = '3E' OR `crew_rank` = '3M') AND `crew_status` = 'PENDING FOR LINEUP' 
0

SELECT * crew_rankがNULLではありませんcrew_infocrew_status FROM =あなたのように何かをしたいかどうかは不明です'PENDING FOR LINEUP' これがうまくいくことを願っています。

関連する問題

 関連する問題