[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;
}
?>
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
