2017-04-06 46 views
0

私は[1,3,4,7]のような値を含むMySQLデータベースにJSONフィールドを持っています。私は簡単にPHP変数から別の配列を提供し、重複があるかどうかを判断できるようにしたいと思います。私は、この例では動作しません知っているが、これは私がしようとしているものです:各アレイ内の1があるのでMySQLのフィルタJSON_CONTAINS配列からの任意の値

$DaysVar = $_GET['Days']; --Example is [1,5,8] 

$sql = mysqli_query($db, " 
    SELECT ScheduleID, 
      Days --Example is [1,3,4,7] 
    FROM Schedule 
    WHERE JSON_CONTAINS(Days, '$DaysVar') 
"); 

は、どのように私はこのクエリが結果を返すために得ることができますか?

+0

テーブルのデータを共有してください –

+0

結果には重複した値しか必要としませんか?または重複している値の数のカウンター? – Shaharyar

+0

あなたはどのバージョンのMysqlにいますか? –

答えて

2

あなたはそれぞれ別々の値に対してJSON_CONTAINSを行うことができます:あなたは、このような上記のSQLを構築することができ、検索する値をPHP変数に格納されている

SELECT * 
FROM Schedule 
WHERE ( JSON_CONTAINS(Days, '1') 
     OR JSON_CONTAINS(Days, '2') 
     OR JSON_CONTAINS(Days, '6') 
     ) 

$DaysVar = $_GET['Days']; 
$condition = implode(" OR ", array_map(function($day) { 
    return "JSON_CONTAINS(Days, '$day')"; 
}, $DaysVar)); 
$sql = mysqli_query($db, " 
    SELECT ScheduleID, 
      Days 
    FROM Schedule 
    WHERE ($condition) 
"); 
+0

値は動的なので、これは役に立ちません。 –

+0

あなたの質問では静的です。あなたはあなたの質問を改革することができますか? – trincot

+0

私は質問を更新しました –

関連する問題