sqlite_fetch_array
SQLiteResult::fetch
SQLiteUnbuffered::fetch
(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)
sqlite_fetch_array -- SQLiteResult::fetch -- SQLiteUnbuffered::fetch — Выбирает следующую запись из результата запроса и возвращает массив
Описание
$result
[, int $result_type
= SQLITE_BOTH
[, bool $decode_binary
= true
]] )Объектно-ориентированный стиль (метод):
$result_type
= SQLITE_BOTH
[, bool $decode_binary
= true
]] )$result_type
= SQLITE_BOTH
[, bool $decode_binary
= true
]] )
Выбирает следующую запись из результата запроса, заданного аргументом
result
. Если результат больше не содержит
данных, возвращает FALSE
, иначе возвращает массив, содержащий данные.
Список параметров
-
result
-
Ресурс результата SQLite. Этот параметр не требуется при использовании объектно-ориентированного метода.
-
result_type
-
Необязательный параметр
result_type
принимает константу, определяющую, как будет индексирован возвращаемый массив. При использованииSQLITE_ASSOC
будет возвращен ассоциативный массив, а при использованииSQLITE_NUM
- числовой.SQLITE_BOTH
вернет массив как с ассоциативными, так и с числовыми индексами. Значением по умолчанию для этой функции являетсяSQLITE_BOTH
. -
decode_binary
-
Когда параметр
decode_binary
установлен вTRUE
(по умолчанию), PHP будет декодировать бинарный код, примененный к данным, как если бы они были закодированы функцией sqlite_escape_string(). Обычно вам следует оставлять это значение по умолчанию, если только вы не работаете с базой данных sqlite, которая была создана в ином приложении.
Возвращаемые значения
Возвращает массив со следующей записью в результирующем наборе,
или FALSE
, если следующая позиция находится за последней
записью.
Имена столбцов, возвращаемые
SQLITE_ASSOC
и SQLITE_BOTH
, будут
приведены к нужному регистру согласно значению конфигурационной опции
sqlite.assoc_case.
Примеры
Пример #1 Процедурный стиль
<?php
$dbhandle = sqlite_open('sqlitedb');
$query = sqlite_query($dbhandle, 'SELECT name, email FROM users LIMIT 25');
while ($entry = sqlite_fetch_array($query, SQLITE_ASSOC)) {
echo 'Имя: ' . $entry['name'] . ' E-mail: ' . $entry['email'];
}
?>
Пример #2 Объектно-ориентированный стиль
<?php
$dbhandle = new SQLiteDatabase('sqlitedb');
$query = $dbhandle->query('SELECT name, email FROM users LIMIT 25'); // буферизованный результирующий набор
$query = $dbhandle->unbufferedQuery('SELECT name, email FROM users LIMIT 25'); // небуферизованный результирующий набор
while ($entry = $query->fetch(SQLITE_ASSOC)) {
echo 'Имя: ' . $entry['name'] . ' E-mail: ' . $entry['email'];
}
?>
Смотрите также
- sqlite_array_query() - Выполняет запрос к базе данных и возвращает результат в виде массива
- sqlite_fetch_string() - Псевдоним sqlite_fetch_single
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- SQLite
- sqlite_array_query
- sqlite_busy_timeout
- sqlite_changes
- sqlite_close
- sqlite_column
- sqlite_create_aggregate
- sqlite_create_function
- sqlite_current
- sqlite_error_string
- sqlite_escape_string
- sqlite_exec
- sqlite_factory
- sqlite_fetch_all
- sqlite_fetch_array
- sqlite_fetch_column_types
- sqlite_fetch_object
- sqlite_fetch_single
- sqlite_fetch_string
- sqlite_field_name
- sqlite_has_more
- sqlite_has_prev
- sqlite_key
- sqlite_last_error
- sqlite_last_insert_rowid
- sqlite_libencoding
- sqlite_libversion
- sqlite_next
- sqlite_num_fields
- sqlite_num_rows
- sqlite_open
- sqlite_popen
- sqlite_prev
- sqlite_query
- sqlite_rewind
- sqlite_seek
- sqlite_single_query
- sqlite_udf_decode_binary
- sqlite_udf_encode_binary
- sqlite_unbuffered_query
- sqlite_valid
Коментарии
[Editor's note: to get short column names there's an undocumented PRAGMA setting. You can exec "PRAGMA short_column_names = ON" to force that behavior.]
I noticed that if you use Joins in SQL queries, the field name is messed up with the dot!
for example if you have this query:
SELECT n.*, m.nickname FROM news AS n, members AS m WHERE n.memberID = m.id;
now if you want to print_r the results returned using SQLITE_ASSOC type, the result array is like this :
array
(
[n.memberID] => 2
[n.title] => test title
[m.nickname] => NeverMind
[tablename.fieldname] => value
)
and I think it looks horriable to use the variable ,for example, $news['m.nickname'] I just don't like it!
so I've made a small function that will remove the table name (or its Alias) and will return the array after its index is cleaned
<?php
function CleanName($array)
{
foreach ($array as $key => $value) {
//if you want to keep the old element with its key remove the following line
unset($array[$key]);
//now we clean the key from the dot and tablename (alise) and set the new element
$key = substr($key, strpos($key, '.')+1);
$array[$key] = $value;
}
return $array;
}
?>