Привет! Я пытаюсь преобразовать сайт для использования подготовленных операторов mysql, однако у меня возникли некоторые проблемы при замене моего использования fetch_array ().
Комментарии на php.net предлагают решение, которое, как я думал, должно работать, но по какой-то причине я получаю странные неопределенные постоянные ошибки при вызове функции через call_user_func_array (), может кто-нибудь предложить лучший способ сделать это?
Вот функция, которую я использую в данный момент. Я немного ошарашил его для публикации здесь (это часть большего класса, который расширяет mysqli, обрабатывает ошибки и т. Д.), Так что извините, если я сделал какие-либо ошибки, скопируйте и вставьте его.
public static 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);
}
public function fetch_array($rawQuery) {
$stmt = $this->prepare($rawQuery);
$row = array();
self::stmt_bind_assoc($stmt, $row);
$result = $stmt->fetch();
$stmt->free();
return $result;
}
Я получаю следующие ошибки:
«Примечание: использование неопределенной константы mysqli_stmt_bind_result - предполагается« mysqli_stmt_bind_result »»
"Неустранимая ошибка: вызов неопределенного метода mysqli_stmt :: free ()"
Может кто-нибудь помочь, объяснив, почему я получаю эти ошибки и как я могу это исправить?
РЕДАКТИРОВАТЬ: вот оригинальный комментарий от php.net http://www.php.net/manual/en/mysqli-stmt.fetch.php#82742