2009-07-02 2 views
2

Функция MySQLi для PHP отличная.PHP Mysqli fetch_assoc

Подготовленные выражения отлично подходят для ввода параметров в запрос.

Однако, если вы используете выражения, похоже, у вас больше нет доступа к функции fetch_assoc. Вы должны вручную привязать все свои результаты. Это означает, что мой SQL-запрос должен отображать все поля, а затем я должен перечислить все переменные заранее при получении результатов (используя bind_result). Это может стать очень раздражающим и тратить время.

Есть ли альтернатива?

Благодаря

ответ

1

MySQLi предоставляет методы борьбы с этим, взгляните на функцию result_metadata.

Я написал класс, позволяющий беспроблемные параметризованные запросы MySQLi - загрузку и основную информацию об использовании доступен здесь: http://www.robpoyntz.com/blog/?p=191

+0

Если вам интересно, я создал версию PDO с использованием одного и того же интерфейса, так что это замена замены вышеперечисленного кода MySQLi. Интересно, что версия PDO, похоже, работает почти на 50% быстрее, чем версия MySQLi. Исходный код доступен здесь: http://www.robpoyntz.com/blog/?p=260 – 2009-07-21 12:36:17

+0

Ссылка сломана, ответ больше не содержит исправления. – BadPirate

4

Да, это называется PDO и, как правило, предпочитают MySQLi. Он предлагает утверждения с параметрами регулярной выборки и не заставляет вас явно связывать все параметры. Типичный запрос может выглядеть так:

$stmt = $db->prepare("SELECT * FROM foo WHERE a = ?"); 
$stmt->execute(array($a)); 

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

PDO очень гибкий, поэтому его можно использовать и другими способами. В руководстве есть много замечательных примеров. Взглянуть!

+1

красивых, PDO выглядит немного меньше боли, чем при использовании MySQLi для готовы statements :) – Jason

Смежные вопросы