Джейсон данные:avail":["Sun-2","Mon-2","Sun-3"]
Как искать с помощью многократного набора набора данных для столбцов и значений в MySQL Query
$avail = $data['avail'];
// Ниже я категоризация значения от утра, днем и вечером.
if($avail != ""){
foreach($avail as $k=>$v)
{
$v;
//dividing value before and after the symbol '-'
$array = explode('-', $v);
$day =$array[0]; // Wed
$column = $array[1]; // 2
if($column == 1)
{
$col = "morning";
}
if($column == 2)
{
$col = "afternoon";
}
if($column == 3)
{
$col = "evening";
}
array_push($cols,$col);
array_push($days,$day);
}
Результат для var_dump ($ cols);
array (size=3)
0 => string 'afternoon' (length=9)
1 => string 'afternoon' (length=9)
2 => string 'evening' (length=7)
Результат для var_dump ($ days);
array (size=3)
0 => string 'Sun' (length=3)
1 => string 'Mon' (length=3)
2 => string 'Sun' (length=3)
Теперь запрос таблицы в базе данных, как это: // часть запроса
$add_here .= sprintf(" AND %s",implode(' OR ', array_map(function($colx) use ($days) {return sprintf("posts.%s IN ('%s')", $colx, implode("','",$days));}, is_array($cols) ? $cols : array($cols))));
НО только теперь я понял, что я делаю это неправильный путь, потому что как я классифицировал данные, сделанные двумя массивами. Один для сеанса дня и другой - набор данных для каждой сессии в целом.
$days = ['sun','mon','tue']; <- data for morning,afternoon and evening mixed together
$col = ['afternoon','morning','evening'];
SO в браузере:
AND (posts.afternoon IN ('sun','mon','tue') OR posts.morning IN ('sun','mon','tue') OR posts.night IN ('sun','mon','tue'))
Смотрите, что его проверка всех данных $days
против каждого значения $cols
. Но то, что я хочу, - это данные для утреннего дня, чтобы проверить утреннюю колонку в таблице во время дневных данных, чтобы проверить день после столба в таблице. То же самое касается вечера.
Как мне изменить код, чтобы для набора данных JSON был выполнен следующий запрос:
джейсон данные:avail":["Sun-2","Mon-2","Sun-3"]
AND (posts.afternoon IN ('sun','mon') OR posts.night IN ('sun'))
значения утром, днем и вечером хранится в виде разделенных запятыми значений в базе данных. утром, днем и вечером указаны названия столбцов в таблице с пометками
благодаря кажется, что вы получите то, что я хотел. Однако я не уверен, как применять массивы в моем запросе. И что возвращает «AND (». Implode («OR», $ conditions). »)»; делать? – 112233
var_dump ($ period); возвращает пустую строку и ошибку: Предупреждение: mysqli_escape_string() ожидает ровно 2 параметра, 1 задано в – 112233
Я видел, что вы используете MySQL для запросов. Я не уверен, какую оболочку MySQL вы используете там, просто ставя эту функцию, чтобы напомнить вам, чтобы предотвратить инъекции SQL. Если вы считаете, что это необязательно, просто удалите этот вызов функции. – SOFe