©
Ce document utilise Manuel du site Web PHP chinois Libérer
(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)
sqlite_fetch_array -- SQLiteResult::fetch -- SQLiteUnbuffered::fetch — Fetches the next row from a result set as an array
$result
[, int $result_type
= SQLITE_BOTH
[, bool $decode_binary
= true
]] )面向对象风格 (method):
$result_type
= SQLITE_BOTH
[, bool $decode_binary
= true
]] )$result_type
= SQLITE_BOTH
[, bool $decode_binary
= true
]] )
Fetches the next row from the given result
handle.
If there are no more rows, returns FALSE
, otherwise returns an
associative array representing the row data.
result
The SQLite result resource. This parameter is not required when using the object-oriented method.
result_type
可选的 result_type
参数接受常量,且决定返回的数组如何被索引。使用
SQLITE_ASSOC
会仅返回关联索引(已命名字段),而
SQLITE_NUM
会仅返回数值索引。 SQLITE_BOTH
会同时返回关联和数值索引。 SQLITE_BOTH
是此函数的默认值。
decode_binary
当
decode_binary
参数设置为 TRUE
(默认值)时,PHP 会解码那些由
sqlite_escape_string()
编码后的二进制数据。通常应保留此值为其默认值,除非要与其他使用 SQLlite 的应用程序建立的数据交互。
Returns an array of the next row from a result set; FALSE
if the
next position is beyond the final row.
由
SQLITE_ASSOC
与 SQLITE_BOTH
返回的列名会依照 sqlite.assoc_case
配置选项的值决定大小写。
Example #1 Procedural example
<?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' ];
}
?>
Example #2 Object-oriented example
<?php
$dbhandle = new SQLiteDatabase ( 'sqlitedb' );
$query = $dbhandle -> query ( 'SELECT name, email FROM users LIMIT 25' ); // buffered result set
$query = $dbhandle -> unbufferedQuery ( 'SELECT name, email FROM users LIMIT 25' ); // unbuffered result set
while ( $entry = $query -> fetch ( SQLITE_ASSOC )) {
echo 'Name: ' . $entry [ 'name' ] . ' E-mail: ' . $entry [ 'email' ];
}
?>
[#1] saleh at sfsj dot net [2004-05-09 18:12:50]
[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;
}
?>