[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, PECL sqlite >= 1.0.0)
sqlite_fetch_array -- SQLiteResult->fetch -- SQLiteUnbuffered->fetch — Fetches the next row from a result set as an array
설명
Object oriented style (method):
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()를 사용하여 인코드한 데이터로 취급하여 이진 인코딩을 해제합니다. 다른 sqlite 적용 프로그램에서 생성한 데이터베이스를 사용하지 않는 한, 기본값으로 사용하면 됩니다.
반환값
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'];
}
?>
참고
- sqlite_array_query() - Execute a query against a given database and returns an array
- sqlite_fetch_string() - 별칭: sqlite_fetch_single
