2017-12-07 1 views
0

値の配列を検索しています。ルックアップ配列の値がデータベースに見つからないときはいつでも、結果配列内の値を "notFound"に設定する必要があります。PHP MySQL - 配列クエリに行がないかどうかを検出する

これはどのようにして達成できますか?

コード:

$sql = "SELECT country FROM customers WHERE name IN ('Adam', 'David', 'Frank', 'Mike')"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     $countryArray[] = $row['country']; 
    } 
} 

電流出力:

+----- -+---------+ 
| Name | Country | 
+------------+----+ 
| Adam |  UK | 
| David |  AU | 
| Mike |  CN | 
+-------+---------+ 

所望の出力:率直がデータベースに見つからない場合

+----- -+-------------+ 
| Name |  Country | 
+------------+--------+ 
| Adam |   UK | 
| David |   AU | 
| Frank |  NotFound| 
| Mike |   CN | 
+-------+-------------+ 

上記の例では、私は結果が欲しいです配列は "NotFound"を返します。

+1

「アダム」、「デヴィッド」、「フランク」、「マイク」の名前はどこにありますか?それらは静的配列である – urfusion

+0

@urfusion - 現在のところ国を返すだけです。私は説明のためにそれらの名前を追加しました。 –

+0

名前をソース配列のキーとして使用する場合は、その値をループ内の国に設定できます。 – jeroen

答えて

0

次のコードを試すことができます。

+0

このソリューションは動作します、ありがとう! –

0

最も効率的でエレガントではありませんが、動作するはずです。 $names配列に、DBと同じ名前(大文字小文字を区別)が含まれていると仮定します。

$names = array('Adam', 'David', 'Frank', 'Mike'); 
$not_found_array = array_fill_keys($names, 'NotFound'); 

$sql = "SELECT name, country FROM customers WHERE name IN ('".implode("','", $names)."')"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     $countryArray[$row['name']] = $row['country']; 
    } 
} 

$countryArray = array_merge($not_found_array, $countryArray); 
関連する問題