Динамически привязывать параметры mysqli_stmt, а затем привязывать результат (PHP)

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

Исходное сообщение: m пытается динамически связать параметры mysql_stmt и получить результат в ассоциативном массиве. Я нашел это сообщение здесь, в stackoverflow, где Эмбер отправила ответ со следующим кодом:

Исходное сообщение: m пытается динамически связать параметры mysql_stmt и получить результат в ассоциативном массиве. Я нашел это сообщение здесь, в stackoverflow, где Эмбер отправила ответ со следующим кодом:

Исходное сообщение: Как создать правильный класс расширения mysqli с подготовленными операторами?

«Предполагая, что вы действительно хотите написать свою собственную версию (в отличие от использования одной из существующих библиотек, предложенных другими ответами - и это хорошие варианты тоже) ...

Вот несколько функций, которые могут оказаться полезными для изучения. Первая позволяет вам привязать результаты запроса к ассоциативному массиву, а вторая позволяет передавать два массива , один - это упорядоченный массив ключей, а другой - ассоциативный массив данных для этих ключей, и эти данные связаны в подготовленный оператор: «

function stmt_bind_assoc (&$stmt, &$out) {
    $data = mysqli_stmt_result_metadata($stmt);
    $fields = array();
    $out = array();

$fields[0] = $stmt;
$count = 1;

while($field = mysqli_fetch_field($data)) {
    $fields[$count] = &$out[$field->name];
    $count++;
}
call_user_func_array(mysqli_stmt_bind_result, $fields);

}

function stmt_bind_params($stmt, $fields, $data) {
    // Dynamically build up the arguments for bind_param
    $paramstr = '';
    $params = array();
    foreach($fields as $key)
    {
        if(is_float($data[$key]))
            $paramstr .= 'd';
        elseif(is_int($data[$key]))
            $paramstr .= 'i';
        else
            $paramstr .= 's';
        $params[] = $data[$key];
    }
    array_unshift($params, $stmt, $paramstr);
    // and then call bind_param with the proper arguments
    call_user_func_array('mysqli_stmt_bind_param', $params);
}

Я попытался изучить код, чтобы понять, что он делает, и я сделал вторую функцию работают правильно, но я не знаю, что мне делать, чтобы использовать первую функцию.Как мне использовать его для получения массива, похожего на mysqli_result :: fetch_assoc ()?

Я хочу иметь возможность использовать результат таким же образом, как вы это делали раньше:

while ($row = mysql_fetch_array($result)){
  echo $row['foo']." ".$row['bar'];
}

Пожалуйста, помогите мне сделать некоторые прогресс с этим :)

6
задан Community 23 May 2017 в 12:02
поделиться