$mask = "Lorem {val1} dolor sit {val2}, consectetur adipisicing {val3}.";
$str = "Lorem ipsum dolor sit amet, consectetur adipisicing elit.";
preg_match_all("/({.*?})/", $mask, $mask_matches);
$re = '/^' . preg_replace("/\\\{.*?\\\}/", '(.*?)', preg_quote($mask, '/')) . '$/';
preg_match($re, $str, $str_matches);
array_shift($str_matches);
$result = array_combine($mask_matches[1], $str_matches);
print_r($result);
Array
(
[{val1}] => ipsum
[{val2}] => amet
[{val3}] => elit
)
SELECT DATE_FORMAT("01.11.2019",'%d.%m.%Y');
20.11.2001
Ничего не смущает? Функция DATE_FORMAT нужна для перевода даты, записанной в стандартном для MySQL формате год-месяц-день, в другое представление. Вы же подаёте ей на вход дату в формате день-месяц-год.SELECT `p`.`PROD` AS `PROD`, `l`.`ID` AS `LIST_ID`,
IF(`m`.`PROD` IS NULL, NULL, `l`.`LIST_VAL`) AS `LIST_VAL`
FROM (
SELECT DISTINCT `PROD`
FROM `main`
) AS `p`
JOIN `list` AS `l`
LEFT JOIN `main` AS `m`
ON `m`.`PROD` = `p`.`PROD` AND `m`.`LIST_ID` = `l`.`ID`
ORDER BY `p`.`PROD`, `l`.`ID`
Выберем для этого первый метод, если не получилось первым, то нужно попробовать вторым, иначе попробовать третьим, но в случае, если все методы не принесли успешных результатов, то необходимо обратиться к Базе Данных и там найти последнее успешное значение.Ваш код не соответствует этому описанию. В приведённой цепочке if-else выполнение какого-либо метода зависит не от результата предыдущего метода, а от набора неких внешних условий. Для цепочки можно использовать
result = tryMethod1() || tryMethod2() || ... || getFromDB();