2017-03-22 9 views
0

こんにちは天才プログラマは、 "mysqli_fetch_array()は、パラメータ1がmysqli_result、boolean"であるとUNION検索エラーで私のエラーを理解するのを助けます。PHPの複数のテーブルでのUNION検索

<?php 
     if(isset($_GET['search'])) { 
      $search_key = $_GET['search']; 
      $sql_search = "(SELECT lastname, firstname, 'organization_member' as type FROM org_member WHERE lastname LIKE '%" . 
          $search_key . "%' OR firstname LIKE '%" . $search_key ."%') 
          UNION 
          (SELECT title, 'fedetated_member' as type FROM fedetated_members WHERE title LIKE '%" . 
          $search_key . "%')"; 

      $query_search = mysqli_query($CONNECTION, $sql_search); 
     } 
    ?> 

    <div class='body_wrap'> 
     <div class='inner_wrap'> 
      <span class='text_black_big'>SEARCH RESULT FOR: <?php echo $_GET['search']; ?></span> 
       <table> 
       <?php while($row_search = mysqli_fetch_array($query_search)) { ?> 
        <tr> 
         <td><br><?php echo $row_search['organization_member'] ?><br><br><?php echo $row_search['fedetated_member'] ?><br></td> 
        </tr> 
       <?php } ?> 
       </table> 
     </div> 
    </div> 
+1

組合は、同じ数の列、具体的データ型 – maSTAShuFu

+0

'ますecho $ sql_search'と印刷されたクエリをデバッグすると2つのクエリであるか、または@maSTArHiAnへに追加しています...ここに – Naga

+0

を示すべき( '(SELECT ''、title、 'fedetated_members WHER ...'と入力してください) またはあなたの2番目のクエリselect文にダミーフィールドを追加することで不正行為をすることができます。 cound concat最初のクエリーの最初と最後の名前が1つのフィールドとして返されるようにします。 '((full name'としてSELECT CONCAT_WS( ''、firstname、lastname)、org_memberタイプとして 'organization_member') ' –

答えて

0

https://msdn.microsoft.com/en-us/library/ms180026.aspx

単一の結果に二つ以上のクエリの結果は、組合内のすべてのクエリに属する​​すべての行を含むことが を設定する組み合わせ。 UNION操作は、2つのテーブルの列 を結合する結合の使用とは異なります。 UNIONを使用して の2つのクエリの結果セットを結合する基本的な規則は次のとおりです。 の数と順序は、すべてのクエリで同じでなければなりません。データ型は 互換でなければなりません。

0

あなたのクエリ文字列が正しくないので、$ query_search変数等しいFALSEです:

$ query_search = mysqli_query($接続、$のsql_search)。

SELECTステートメントでは、同じタイプの列を選択する必要があり、最初のSELECTステートメントからの列名が、返される結果の列名として使用されます。 あなたはもっとここに見つけることができます:UNION Syntax

関連する問題