$sql = "select ...
from ...
where 1 = 1
".(isset($_POST['status']) ? ' and medialib.status LIKE '.$_POST['status'] // тут сшили текст запроса и значение параметра (эти два слова нужно подчеркнуть)
: "")
$bind_params = [];
if(isset($_POST['status']))
$bind_params['status'] = $_POST['status'];
$sql = "select ...
from ...
where 1 = 1
".(isset($bind_params['status']) ? " and medialib.status LIKE :status " // тут сшили текст запроса со специальным маркером (может использоваться знак ? )
: "")
foreach($bind_params as $bind_param)
{
// тут привязываем каждое значение параметра с маркером в запросе через функцию bind_param (интерфейс и название функции зависит от библиотеки для соединения с базой данных)
}
И мне нужно использовать такую конструкцию:
select food.* from table
select food.*
from(select t.Milk as food_Milk, t.Oil as food_Oil
from table as t) as food
onclick="window.location.reload(); return false;"
select *
from menu m
join menu_consist mc on mc.menu_id = m.menu_id
join dish d on d.dish_id = mc.dish_id
where m.public_date >= CURDATE()
and m.public_date <= CURDATE() + INTERVAL 30 DAY
[[*alias:is=`алиас_последнего_значения_uri,_но_не_факт,_что_не_будет_пересекаться_с_одноименными`:then=`вызов_чанка_блока_или_чистый_html`]]
[[!If?
&subject=`[[*alias]]`
&operator=`==`
&operand=`алиас_последнего_значения_uri,_но_не_факт,_что_не_будет_пересекаться_с_одноименными`
&then=`вызов_чанка_блока_или_чистый_html`
]]
$city_dictionary[$en_name] = $ru_name;
//$data['response'][0]['cities'][0] - вы уверены, что по конечному нулевому индексу находится весь список, а не один город?
foreach($data['response'][0]['cities'][0] as $city_key => $city)
{
if(array_key_exists($city, $city_dictionary))
$data['response'][0]['cities'][0][$city_key] = $city_dictionary[$city];
}
INSERT INTO table (config, allowance, tablename) VALUES --,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''Ph'']/Amperage', 3, 'float_actual')
,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''Ph'']/Voltage', 3, 'number_actual')
,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''Mc1'']/Amperage', 3, 'float_actual')
,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''Mc1'']/Voltage', 3, 'number_actual')
,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''Mc12'']/Amperage', 3, 'float_actual')
,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''Mc12'']/Voltage', 3, 'number_actual')
,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''Mc2'']/Amperage', 3, 'float_actual')
,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''Mc2'']/Voltage', 3, 'number_actual')
,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''An'']/Amperage', 3, 'float_actual')
,
('Station/Equip/Slot/Item[@key=''1'']/Supply/Item[@key=''An'']/Voltage', 3, 'number_actual')
;
INSERT INTO table (config, allowance, tablename) VALUES --</xsl:text><xsl:apply-templates/>
<xsl:text>;</xsl:text>
</xsl:template>
<xsl:template match="node()[@format]">
<xsl:variable name="allowance" select="Allowance/@value"/>
<xsl:text>, </xsl:text> <!-- Сюда добавлены запятая и перенос -->
<xsl:value-of select="concat('(', $apostrophe)"/>
<xsl:for-each select="ancestor::*">
<xsl:variable name="element" select="local-name()"/>
<xsl:value-of select="$element"/>
<xsl:if test="$element='Item'">
<xsl:value-of select="concat('[@key=', $apostrophe, $apostrophe, @key, $apostrophe, $apostrophe, ']')"/>
</xsl:if>
<xsl:text>/</xsl:text>
</xsl:for-each>
<xsl:choose>
<xsl:when test="starts-with(@format, 'N')">
<xsl:value-of select="concat(local-name(), $apostrophe, ', ', $allowance, ', ', $apostrophe, 'number_actual', $apostrophe, ')')"/> <!--убран вывод последней запятой -->
</xsl:when>
<xsl:when test="starts-with(@format, 'F')">
<xsl:value-of select="concat(local-name(), $apostrophe, ', ', $allowance, ', ', $apostrophe, 'float_actual', $apostrophe, ')')"/> <!--убран вывод последней запятой -->
</xsl:when>
<xsl:when test="starts-with(@format, 'D')">
<xsl:value-of select="concat(local-name(), $apostrophe, ', ', $allowance, ', ', $apostrophe, 'decimal_actual', $apostrophe, ')')"/> <!--убран вывод последней запятой -->
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(local-name(), $apostrophe, ', ', $allowance, ', ', $apostrophe, 'string_actual', $apostrophe, ')')"/> <!--убран вывод последней запятой -->
</xsl:otherwise>
</xsl:choose>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
=> '{type' =>
$taskList[] = array( // старый способ объявления массива, можно [, но не суть
'type' => 'Feature',
'id' => $row->id,
'geometry' => // в json-е встретилась фигурная скобка (свойство-объект) - повторяю ее открытие в своей конструкции
[ // это хоть и объявление массива, но в определенном режиме в JSON конвертнется в объект, так как имена свойств ассоциативные
'type' => 'Point',
'coordinates' =>
[ // а тут массив останется массивом, так как о ключах ни слова (они по индексу)
$row->coordinates,
$row->coordinates2
] // конец свойства coordinates
] // конец свойства geometry
);
foreach (xrange(1, 9, 2) as $number) {
echo "$number ";
}
for ($i = $start; $i <= $limit; $i += $step) {
yield $i;
}
tasks.push(data); // тут вставили очередной элемент
let task_index = tasks.length - 1; // узнаем его индекс по длине массива, так как он в текущей ситуации последний
// несколько строк спустя
b1.addEventListener("click",
(function(inner_task_index) // функция-обертка для изоляции контекста, сюда передается значение task_index, я специально выделил его другим именем inner_task_index, чтобы видеть контекст функции-обертки
{
// обертка возвращает функцию-обработчик события для addEventListener
return function delFromLocalSt() {
task.removeChild(li);
let array = JSON.parse(localStorage.getItem('task'));
array.splice(inner_task_index, 1); // удаляем элемент по известному индексу используя механизм замыкания, используя контекст функции обертки
localStorage.setItem('task', JSON.stringify(array));
}
})(task_index) // вызываем хитрую обертку, чтобы обеспечить изоляцию переменной от контекста функции createEl
);
$need_count = 10; // сколько требуется файлов для выборки
$alive_count = 0; // сколько живых файлов
$is_need_repeat = true; // требуется повторить попытку получить живые файлы
$death_list = []; // сюда накапливаем список id мертвых файлов
$alive_list = []; // сюда накапливаем список id живых файлов
while($is_need_repeat) // Если можно делать итерационную попытку и пока не набрали нужное количество живых файлов
{
// Этот запрос, чтобы прощупать целостность файлов, достаточно получить только те атрибуты, которые позволяют проверить его путь и запомнить id.
$database->setQuery("
SELECT id
from блаблабла
WHERE блаблабла
".(count($depth_list) > 0 ? : ' and id not in ('.join(',',$death_list).') ' : '')." -- отсеиваем мертвые файлы из запроса, они нам не нужны
".(count($alive_list) > 0 ? : ' and id not in ('.join(',',$alive_list).') ' : '')." -- отсеиваем живые файлы из запроса, мы их уже проверяли
ORDER блаблабла
limit 0,".($need_count - $alive_count)); // делаем лимит по оптимистичному сценарию, как будто можем получить список файлов, и все они будут живые, но только то кол-во, которое недостает
while($row = mysql_fetch_assoc($request))
{
if(file_exists('/www/ПУТЬ/'.$row['id'].'_100.jpg'))
{
$alive_list[] = $row['id']; // файл живой, заносим его id в список
}
else
{
$death_list[] = $row['id']; // файл мертвый, заносим его id в список
}
$curr_alive_count = count($alive_list);
$is_need_repeat = $curr_alive_count > 0 && $curr_alive_count > $alive_count && $curr_alive_count < $need_count; // необходимо продолжить попытки, если на текущей итерации получили хоть один живой файл, живых файлов на этой итерации оказалось больше, чем на предыдущей, и их кол-во не достаточно до необходимого
$alive_count = $curr_alive_count; // вписываем кол-во живых файлов на текущей итерации для проверки в будущем цикле (чтобы сравнить результаты двух циклов)
}
}
// теперь можно сделать нормальный запрос, исключив мертвые файлы:
$database->setQuery("
SELECT *
from блаблабла
WHERE блаблабла
".(count($depth_list) > 0 ? : ' and id not in ('.join(',',$death_list).') ' : '')." -- отсеиваем мертвые файлы из запроса
ORDER блаблабла
limit 0,".$need_count);
$database->setQuery("
SELECT *
from блаблабла
WHERE блаблабла
and is_del is null -- или нулю, в зависимости, что будет по умолчанию
ORDER блаблабла
limit 0,".$need_count);