Я только что столкнулся с этой проблемой и закодировал небольшую обертку. Это не самый красивый или лучший код, я уверен, но он может помочь кому-то, вот он:
function runQuery(PDO $PDO, string $sql, array $params = [])
{
if (!count($params)) {
return $PDO->query($sql);
}
foreach ($params as $key => $values) {
if (is_array($values)) {
// get placeholder from array, e.g. ids => [7,12,3] would be ':ids'
$oldPlaceholder = ':'.$key;
$newPlaceholders = '';
$newParams = [];
// loop through array to create new placeholders & new named parameters
for($i = 1; $i <= count($values); $i++) {
// this gives us :ids1, :ids2, :ids3 etc
$newKey = $oldPlaceholder.$i;
$newPlaceholders .= $newKey.', ';
// this builds an associative array of the new named parameters
$newParams[$newKey] = $values[$i - 1];
}
//trim off the trailing comma and space
$newPlaceholders = rtrim($newPlaceholders, ', ');
// remove the old parameter
unset($params[$key]);
// and replace with the new ones
$params = array_merge($params, $newParams);
// amend the query
$sql = str_replace($oldPlaceholder, $newPlaceholders, $sql);
}
}
$statement = $PDO->prepare($sql);
$statement->execute($params);
return $statement;
}
Например, передавая их в:
SELECT * FROM users WHERE userId IN (:ids)
array(1) {
["ids"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
}
Становится:
SELECT * FROM users WHERE userId IN (:ids1, :ids2, :ids3)
array(3) {
[":ids1"]=>
int(1)
[":ids2"]=>
int(2)
[":ids3"]=>
int(3)
}
Это не пуленепробиваемый, но, как единственный разработчик для моих потребностей, он отлично работает, пока все равно.
Хотя это и не самое лучшее, способ получения значения cookie - это хорошо. Ваша проблема в том, как передать значение в шаблон веточки.
Синтаксис для присвоения $cookie_time
неправильный.
Это должно быть как; $this['cookie_time'] = ...
Полный код страницы:
url = "/test"
==
public function onStart() {
$this['cookie_time'] = htmlspecialchars( Хотя это и не самое лучшее, способ получения значения cookie - это хорошо. Ваша проблема в том, как передать значение в шаблон веточки.
Синтаксис для присвоения $cookie_time
неправильный.
Это должно быть как; $this['cookie_time'] = ...
Полный код страницы:
[110] COOKIE['get_date_time']);
}
==
{{ cookie_time }}