Есть ли пронумерованные заполнители для подготовленного оператора mysql? - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь работать с подготовленными MySQL заявлениями.Мне интересно, есть ли возможность нумерованных заполнителей, которые я могу использовать в sprintf или vsprintf.Например:

<?php
$format = 'The %2$s contains %1$d monkeys';
echo sprintf($format, $num, $location);
?>

1 Ответ

0 голосов
/ 18 декабря 2018

Это зависит от того, какую библиотеку SQL вы используете в PHP.

Если вы используете библиотеку PDO, вы можете использовать именованные параметры, что аналогично использованию чисел.http://php.net/manual/en/pdostatement.bindparam.php приводит пример этого:

$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();

В приведенном выше описании, поскольку параметры именуются, не имеет значения, в каком порядке вы предоставляете переменные «калории» и «цвета»,или где они встречаются в операторе.

Однако mysqli не поддерживает это, и вместо этого вы должны использовать простые ? заполнители, а затем предоставлять параметры в точном порядке их использования -см http://php.net/manual/en/mysqli-stmt.bind-param.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...