It isnt specified in the above description for this function, but yes this function will not only return the first column, but it will also return the first value (ie from the first row in the result set) of that column. Also the result set pointer is involved here in that if you use sqlite_fetch_single in a loop, it will return each value in the first column sequentially and advance the result set pointer each time.
i.e. the first loop iteration it returns the first value in the first column. the second loop iteration it returns the second value in the first column. the third loop iteration the third value and so on.
$handle = sqlite_open("database_file_name") or die("Could not open database");
//generate query string
$query = "select distinct field1 from database_name";
//execute query
$result = sqlite_query($handle,$query)
//if a row exists
if(sqlite_num_rows($result)>0){
echo "<table cellpadding=\"10\" border=\"1\">";
//check for more rows
while(sqlite_has_more($result)){
//get first field from each row
//print values
$row=sqlite_fetch_single($result);
echo "<tr>";
echo "<td>".$row."</td>";
echo "</tr>";
}
echo "</table>";
}
//close database file
sqlite_close($handle);
sqlite_fetch_single
SQLiteResult->fetchSingle
SQLiteUnbuffered->fetchSingle
(PHP 5, PECL sqlite:1.0.1-1.0.3)
sqlite_fetch_single -- SQLiteResult->fetchSingle -- SQLiteUnbuffered->fetchSingle — 結果セットの最初のカラムを文字列として取得する
説明
string sqlite_fetch_single
( resource $result
[, bool $decode_binary
] )
オブジェクト指向言語型スタイル (メソッド):
SQLiteResult
string fetchSingle
([ bool $decode_binary
] )
SQLiteUnbuffered
string fetchSingle
([ bool $decode_binary
] )
sqlite_fetch_single() は、 レコードセットの最初のカラムの値を返すことを除いて sqlite_fetch_array() と等価です。
この関数は、データの単一カラムの値を確認するだけの場合に データを処理する最善の方法です。
パラメータ
- result
-
SQLite 結果リソース。 このパラメータは、 オブジェクト指向言語型メソッドを使用する場合は不要です。
- decode_binary
-
decode_binary パラメータが TRUE (デフォルト)に 設定された場合、PHP はバイナリエンコーディングをデコードします。 これは、sqlite_escape_string() によりエンコードされたデータに 適用されます。sqlite をサポートする他のアプリケーションにより 作成されたデータベースを処理する時以外は、この値をデフォルトのままにしておくべきです。
例
例1 sqlite_fetch_single() の例
<?php
if ($dbhandle = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
$sql = "SELECT id FROM sometable WHERE id = 42";
$res = sqlite_query($dbhandle, $sql);
if (sqlite_num_rows($res) > 0) {
echo sqlite_fetch_single($res); // 42
}
sqlite_close($dbhandle);
}
?>
sqlite_fetch_single
jmarbas at hotmail dot com
23-Jul-2005 05:45
23-Jul-2005 05:45
roga at yoopee dot de
11-Jul-2004 01:02
11-Jul-2004 01:02
Be careful with the use of sqlite_fetch_single() in a while-loop:
<?php
$result = sqlite_query($db_handle, 'SELECT foo FROM bar;');
while ($row = sqlite_fetch_single($result)) {
/*...do s.th. with $row...*/
}
?>
This may not work as expected because the loop will stop if any of the foos has a false value (e.g. zero).
Use sqlite_has_more() instead:
<?php
$result = sqlite_query($db_handle, 'SELECT foo FROM bar;');
while (sqlite_has_more($result)) {
$row = sqlite_fetch_single($result);
/*...do s.th. with $row...*/
}
?>
