SQLite3Result::columnType
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3Result::columnType — n 番目のカラムの型を返す
パラメータ
column
-
0 から始まるカラムの数値インデックス。
戻り値
column
で指定したカラムのデータ型インデックス
(SQLITE3_INTEGER
、SQLITE3_FLOAT
、
SQLITE3_TEXT
、SQLITE3_BLOB
あるいは
SQLITE3_NULL
のいずれか)
を返します。
カラムが存在しない場合は、false
を返します。
+add a note
User Contributed Notes 3 notes
phpnotes at carwash dot org ¶
13 years ago
This function never returns any value other than 5, indicating SQLITE3_NULL. SQLite 3 doesn't have column types, it has column affinities. Different rows of the same table (and rows resulting from a SELECT) can hold values of different types. Therefore this API cannot return anything useful, and the method appears to be using SQLITE3_NULL as a placeholder.
The function in useless and should be removed or marked as deprecated in future releases, so as not to give any programmer the false idea that the values returned are useful.
hairbysubaru at gmail dot com ¶
8 years ago
jean-marc is correct. SQLite determines column types dynamically based upon the returned record-set.
jean-marc at paratte dot ch ¶
10 years ago
To find the type of columns, you need to 'query' the SQL sentence, 'fetchArray' the 1rst row, and then extract the name and type of each column.
Example:
function _sqlite_fetch_all( $db, $sql ) {
$sqlite = new SQLite3( $db);
if( $sqlite->lastErrorCode() ) return;
$result = $sqlite->query( $sql );
$result->fetchArray( SQLITE3_NUM );
$fieldnames = [];
$fieldtypes = [];
for( $colnum=0; $colnum<$result->numColumns(); $colnum++) {
$fieldnames[] = $result->columnName($colnum);
$fieldtypes[] = $result->columnType($colnum);
}
$result->reset();
while( $row = $result->fetchArray( SQLITE3_NUM ) ) {
for ($colnum=0; $colnum<count($row); $colnum++) {
$col = &$row[$colnum];
if (isset($fieldtype_encode_binary[$fieldtypes[$colnum]])) $col = $fieldtype_encode_binary[$fieldtypes[$colnum]]( $col );
}
unset($col);
if ($resulttype == SQLITE3_ASSOC) $row = array_combine( $fieldnames, $row );
$rows[] = $row;
}
$result->finalize();
$sqlite->close();
return $rows;
}
Remark 1: The type of a column is SQLITE3_NULL before any 'fetchArray' and 'false' after last fetched row.
Remark2 : The actual values of SQLITE3_INTEGER, SQLITE3_FLOAT, SQLITE3_TEXT, SQLITE3_BLOB, SQLITE3_NULL are 1, 2, 3, 4, 5.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google