if ($result->num_rows > 0 && $order['status_cart'] == 'Ожидает оплаты')
{
// do something
}
select a.*
from (
select s.*,
row_number() over (partition by `customer_id` order by unit_importance, updated_at desc) rn
from stream s
) a
where a.rn = 1
WITH RECURSIVE
-- Тестовая выборка. Если есть "живая" таблица, то эту выборку можно убрать
t as (select 10.000 value union
select 10.001 union
select 10.002 union
select 10.003 union
select 10.005 union
select 10.009 -- специально добавил контр. пример
),
-- Таблица-генератор последовательности чисел от min(t.value) до max(t.value) с шагом 0.001 с помощью CTE (есть ограничение по глубине рекурсии!)
num_series AS (
SELECT (select min(value) from t) AS num
UNION ALL
SELECT num + 0.001 FROM num_series
WHERE num < (select max(value) from t)
)
-- Запрос, в котором сопоставляем таблицу генератор и исходную таблицу, чтобы найти недостающие кванты
SELECT *
FROM num_series
where not exists(select t.value from t where t.value = num_series.num)
and num_series.num >= 10.000
select count(case when scv.date >= CURDATE() then 1 end) today_count,
count(case when scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) and scv.date < CURDATE() then 1 end) yesterday_count,
count(case when scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 WEEK) then 1 end) week_count,
count(case when scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) then 1 end) month_count
from statistics_couter_visit as scv
where scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) -- тут ограничение по макс. окну просмотра статистики, то есть по month_count
select count(case when scv.date >= UNIX_TIMESTAMP(CURDATE()) then 1 end) today_count,
count(case when scv.date >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY)) and scv.date < UNIX_TIMESTAMP(CURDATE()) then 1 end) yesterday_count,
count(case when scv.date >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 WEEK)) then 1 end) week_count,
count(case when scv.date >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) then 1 end) month_count
from statistics_couter_visit as scv
where scv.date >= UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) -- тут ограничение по макс. окну просмотра статистики, то есть по month_count
при желании ее удалять
if(isset($_POST['action']) && $_POST['action'] == 'delete') // есть action и он равен delete
{
$link = mysqli_connect($host, $user, $password, $database);
$sql = "DELETE FROM `program_day_1`"; // по одной инструкции удаления на каждую таблицу
$res = mysqli_query($link, $sql);
$sql = "DELETE FROM `program_day_2`";
$res = mysqli_query($link, $sql);
mysqli_close($link);
header('location: program-admin.php');
}
while($row=mysqli_fetch_array($res))
{
// #########################
// #### начало тела цикла #####
// ##########################
$iduser=$id;
$idkat=$row['idkat'];
// #########################
// #### конец тела цикла #####
// ##########################
}
$res=mysqli_prepare($bd, "INSERT INTO zakaz (iduser,idkat)
VALUES(?,?)");
mysqli_stmt_bind_param($res, 'ii', $iduser,$idkat); // подставляем переменные, которые присвоились на ПОСЛЕДНЕМ прогоне цикла
$result2=mysqli_stmt_execute($res);
while($row=mysqli_fetch_array($res))
{
// #########################
// #### начало тела цикла #####
// ##########################
$iduser=$id;
$idkat=$row['idkat'];
$res2=mysqli_prepare($bd, "INSERT INTO zakaz (iduser,idkat)
VALUES(?,?)");
mysqli_stmt_bind_param($res2, 'ii', $iduser,$idkat); // подставляем переменные, которые присвоились на ТЕКУЩЕМ прогоне цикла
$result2=mysqli_stmt_execute($res2);
// #########################
// #### конец тела цикла #####
// ##########################
}
$result =
[
1 => // department_id
[
1 /* 000i индекс */ => [1 /*индекс вида предмета*/ => '1_1_0001', 2 => '1_2_0001', 3 => '1_3_0001' /* непосредственно данные */],
2 /* 000i индекс */ => [1 /*индекс вида предмета*/ => '1_1_0002', 2 => '1_2_0002', 3 => '1_3_0002' /* непосредственно данные */],
3 /* 000i индекс */ => [1 /*индекс вида предмета*/ => '1_1_0003', 3 => '1_3_0003' /* непосредственно данные */],
...
],
2 =>
...
];
select t.department_id,
t1.item as type_1,
t2.item as type_2,
...
from t
left join (select t.department_id, t.item from t where t.type_id = 1) t1 on t1.department_id = t.department_id
left join (select t.department_id, t.item from t where t.type_id = 2) t2 on t2.department_id = t.department_id
...
where 1 = 1
and (SUBSTRING_INDEX(t.item, '_', -1) + 0 = SUBSTRING_INDEX(t1.item, '_', -1) + 0 or t1.item is null)
and (SUBSTRING_INDEX(t.item, '_', -1) + 0 = SUBSTRING_INDEX(t2.item, '_', -1) + 0 or t2.item is null)
...
-- тут нужно получить равенство всех субиндексов 0000i от t.item сравнить со всеми tn.item
order by t.department_id, SUBSTRING_INDEX(t.item, '_', -1) + 0
<?php
error_reporting(E_ALL); // репорт ошибок в файл error_log
ini_set('display_errors', 'On'); // вывод сообщения об ошибке
var_dump($_POST);
var_dump($pdo->errorInfo());
писать скрипт, который будет вытаскивать по запросу необходимые записи, далее для каждой записи разбирать сер.массив, находить нужное значение, изменять его и затем записывать новый массив с изменённым значением в БД
/* создание подготавливаемого запроса */
$stmt = $mysql->prepare("select sum(c.`Price`) as price_sum
from `dogovor` d
join `catalog` c on c.`Id_Product` = d.`Id_Product`
where d.`id_client` = ?");
/* связывание параметров с метками */
$stmt->bind_param("i", $id_client);
/* выполнение запроса */
$result = $stmt->execute();
/* выборка результатов */
$row = $result->fetch_accos();
if($row)
{
echo 'Общая стоимость всех заказов клиента: '.$row['price_sum'];
}
else
{
echo 'Запрос не дал результата!';
}