|
sqlite_query
Executes a query against a given database and returns a result handle
(PHP 5, PECL sqlite:1.0-1.0.3)
Object oriented style (method): SQLiteDatabase { Executes an SQL statement given by the query against a given database handle. Parameters
Note:
Two alternative syntaxes are supported for compatibility with other database extensions (such as MySQL). The preferred form is the first, where the dbhandle parameter is the first parameter to the function. Return Values
This function will return a result handle or
Regardless of the query type, this function will return sqlite_query() returns a buffered, seekable result handle. This is useful for reasonably small queries where you need to be able to randomly access the rows. Buffered result handles will allocate memory to hold the entire result and will not return until it has been fetched. If you only need sequential access to the data, it is recommended that you use the much higher performance sqlite_unbuffered_query() instead. Notes
Warning:
SQLite will execute multiple queries separated by semicolons, so you can use it to execute a batch of SQL that you have loaded from a file or have embedded in a script. However, this works only when the result of the function is not used - if it is used, only the first SQL statement would be executed. Function sqlite_exec() will always execute multiple SQL statements.
When executing multiple queries, the return value of this function
will be Code Examples / Notes » sqlite_query05-oct-2004 09:54
While reading the manual at sqlite.org, I can answer for the quotes in strings. You should put two quote to get one. insert into atable values ( '5 O''Clock'); csaba
The function below allows you to submit multiple queries in one shot to a SQLITE database, and will return whatever you would get for the final query. function sqlite_query_multi ($db, $query) { // submit multiple queries (separated by ;) to $db // and return the result from the last one $multiSQL = "/('[^']*'|\"[^\"]*\"|[^;'\"])*;/"; preg_match_all ($multiSQL, "$query;", $aSQL); for ($i=sizeof($aSQL=$aSQL[0]);$i--;) if (!($trim=trim(substr($aSQL[$i],0,-1)))) unset ($aSQL[$i]); else $aSQL[$i] = "$trim;"; foreach ($aSQL as $i => $sql) $dbRes = sqlite_query ($db, $sql); return (@$dbRes); } The section below illustrates the above function: $db = sqlite_open(":memory:", 0666, $sqliteerror); $query = <<<EOD CREATE TABLE foo (bar INTEGER PRIMARY KEY, baz TEXT); INSERT INTO foo VALUES (Null, 'Hi'); INSERT INTO foo VALUES (Null, 'Mom'); SELECT * FROM foo; EOD; $dbRes = sqlite_query_multi ($db, $query); // 4 statements while (sqlite_has_more($dbRes)) var_dump(sqlite_fetch_array($dbRes, SQLITE_ASSOC)); Csaba Gabor jason
sqlite_open will return NULL if the web server cannot write to the sqlite database file. I saw the following message in my web server error log: PHP Warning: sqlite_query(): (null) ... It turns out that the sqlite database file was owned by a user other than the one the web server was running as. In my case, it was a Linux system running Apache (which was running under the context of user apache). The sqlite database file was owned by root. I changed ownership of the file to user apache and now it works! The sqlite_open call now returns a valid result handle. Jason Aeschilman |
Change Languagesqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_exec sqlite_factory sqlite_fetch_all sqlite_fetch_array sqlite_fetch_column_types sqlite_fetch_object sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_has_prev sqlite_key sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_prev sqlite_query sqlite_rewind sqlite_seek sqlite_single_query sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query sqlite_valid |