Mik*_*uca 9 php mysql arrays json
我在 MySQL 数据库中有一个 JSON 字段,其中包含[1,3,4,7]. 我希望能够轻松地从 PHP 变量提供另一个数组并确定是否有任何重叠。我知道这个例子不起作用,但这就是我想要做的:
$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')
");
Run Code Online (Sandbox Code Playgroud)
由于每个数组中有一个 1,我怎样才能让这个查询返回结果?
tri*_*cot 13
您可以JSON_CONTAINS为每个单独的值执行一个:
SELECT *
FROM Schedule
WHERE ( JSON_CONTAINS(Days, '1')
OR JSON_CONTAINS(Days, '2')
OR JSON_CONTAINS(Days, '6')
)
Run Code Online (Sandbox Code Playgroud)
当要搜索的值存储在 PHP 变量中时,您可以像这样构建上述 SQL:
$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)
");
Run Code Online (Sandbox Code Playgroud)