sqlite_query

(PHP 5)

sqlite_query --  Выполняет запрос к базе данных и возвращает идентификатор результата

Описание

resource sqlite_query ( resource dbhandle, string query )

resource sqlite_query ( string query, resource dbhandle )

Выполняет SQL запрос query к базе данных, заданной аргументом dbhandle.

Эта функция возвращает идентификатор результата запроса или FALSE в случае ошибки. Для запросов, возвращающих данные, этот идентификатор может использоваться в качестве аргумента таких функций как sqlite_fetch_array() или sqlite_seek().

Независимо от типа запроса, в случае возникновения ошибки эта функция возвращает FALSE.

sqlite_query() сохраняет выбранные записи в буфере, что позволяет перебирать возвращенные записи в произвольном порядке. Её следует использовать только для запросов, возвращающих относительно небольшое количество записей. Если вам необходим только последовательный доступ к записям, рекомендуется ипользовать функцию sqlite_unbuffered_query(), которая выполняется быстрее и потребляет меньше памяти.

Замечание: Два варианта синтаксиса используются для обеспечения совместимости с другими модулями для работы с базами данных (например MySQL). Предпочтительной является первая форма записи, использующая dbhandle в качестве первого аргумента.

Внимание

SQLite выполняет несколько запросов, разделенных точкой с запятой, что можно использовать, например, для выполнения запросов, прочитанных из файла. Однако, если хотя бы один из запросов должен возвращать набор записей (SELECT), то будет выполнен только первый запрос. Функция sqlite_exec() всегда выполняет все запросы.

При выполнении нескольких запросов, эта функция возвращает FALSE в случае ошибки, иначе возвращается либо TRUE, либо идентификатор результата запроса.

Смотрите также

sqlite_unbuffered_query() and sqlite_array_query().



sqlite_query
jason at fatpipeinc dot com
27-Oct-2005 07:32
Correction:

sqlite_query will return NULL if the web server cannot write to the sqlite database file.

(please correct the previous post and delete this one)
jason at fatpipeinc dot com
24-Oct-2005 09:35
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
05-Oct-2004 01: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 at alum dot mit dot edu
29-Apr-2004 06:41
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

<sqlite_prevsqlite_rewind>
 Last updated: Tue, 15 Nov 2005