[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 — Lit la prochaine ligne de résultat SQLite dans un tableau
Description
$result
[, int $result_type = SQLITE_BOTH
[, bool $decode_binary = true
]] )Style orienté objet (méthode) :
$result_type = SQLITE_BOTH
[, bool $decode_binary = true
]] )$result_type = SQLITE_BOTH
[, bool $decode_binary = true
]] )
sqlite_fetch_array() lit la prochaine ligne dans le résultat
result. S'il n'y a pas d'autres lignes,
sqlite_fetch_array() retourne FALSE et, sinon,
elle retourne un tableau représentant les données lues.
Liste de paramètres
-
result -
La ressource de résultat SQLite. Ce paramètre n'est pas requis lorsque vous utilisez la méthode orientée objet.
-
result_type -
Le paramètre optionnel
result_typeaccepte une constante et détermine comment le tableau retourné doit être indexé. L'utilisation deSQLITE_ASSOCretournera uniquement un tableau associatif (nom des champs) tandis queSQLITE_NUMretournera un tableau indexé numériquement (numéro ordinal des champs).SQLITE_BOTHretournera des indices numériques et associatifs.SQLITE_BOTHest la valeur par défaut pour cette fonction. -
decode_binary -
Lorsque
decode_binaryvautTRUE(par défaut), PHP va décoder les données binaires, si elles ont été codées avec la fonction sqlite_escape_string(). Vous allez généralement laisser cette valeur à sa valeur par défaut, à moins que vous ne travailliez avec des bases opérées par d'autres applications.
Valeurs de retour
Retourne un tableau de la ligne suivante du jeu de résultats: FALSE si la
position suivante est au-delà de la dernière ligne.
Les noms de colonnes retournés par
SQLITE_ASSOC et SQLITE_BOTH
suivent les règles concernant la case définie par l'option de configuration
sqlite.assoc_case.
Exemples
Exemple #1 Style procédural
<?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 'Name: ' . $entry['name'] . ' E-mail: ' . $entry['email'];
}
?>
Exemple #2 Style orienté objet
<?php
$dbhandle = new SQLiteDatabase('sqlitedb');
$query = $dbhandle->query('SELECT name, email FROM users LIMIT 25'); // jeu de résultat bufférisé
$query = $dbhandle->unbufferedQuery('SELECT name, email FROM users LIMIT 25'); // jeu de résultat non bufférisé
while ($entry = $query->fetch(SQLITE_ASSOC)) {
echo 'Name: ' . $entry['name'] . ' E-mail: ' . $entry['email'];
}
?>
Voir aussi
- sqlite_array_query() - Exécute une requête SQL avec SQLite et retourne un tableau
- sqlite_fetch_string() - Alias de sqlite_fetch_single
