Как заполнитель в подготовленном выражении вызывает значение в ассоциативном массиве? - PullRequest
0 голосов
/ 28 августа 2018

Код уже работает, но я не мог полностью понять, как заполнители называют значение ассоциативного массива. Я уже прочитал документацию, но безуспешно, чтобы понять это.

$app['dtb'] -> insert('users', [
    'name' => $_POST['name']
    'age' => $_POST['age],  ]);`

Мой метод вставки:

$sql = sprintf(
    'insert into %s (%s) values (%s)',
    $table,
    implode(', ' , array_keys($parameters)),
    ':' . implode(', :' , array_keys($parameters))
);

Так что это приведет к чему-то вроде этого:

insert into users (name) values (:name)

Если я не использую bind_param, как он определяет, что :name является значением ключа name?

1 Ответ

0 голосов
/ 28 августа 2018

bind_param является функцией mysqli. Этот драйвер не поддерживает именованные заполнители. Вы должны использовать PDO, PDO имеет функцию bindparam, которая аналогична. Это также позволяет вам просто передать массив в функцию execute. Это связывает значения в порядке их появления, если использовались безымянные заполнители (?), или по ключам массива, если были названы заполнители (:...). Я предполагаю, что вы передаете $parameters функции execute.

...