PHP
downloads | documentation | faq | getting help | mailing lists | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

sqlite_rewind> <sqlite_prev
Last updated: Fri, 14 Nov 2008

view this page in

sqlite_query

(PHP 5, PECL sqlite:1.0-1.0.3)

sqlite_queryExecuta uma query em um banco de dados e retorna o manipulador de resultados.

Descrição

resource sqlite_query ( resource $dbhandle , string $query [, int $result_type [, string &$error_msg ]] )
resource sqlite_query ( string $query , resource $dbhandle [, int $result_type [, string &$error_msg ]] )

Modo orientado a objeto (método):

SQLiteDatabase
SQLiteResult query ( string $query [, int $result_type [, string &$error_msg ]] )

Executa uma SQL indicada pelo parâmetro query com um banco de dados.

Parâmetros

dbhandle

O resource do banco de dados SQLite; retornado da sqlite_open() quando usado no modo procedural. Este parâmetro não é requerido quando usado o método no modo orientado a objeto.

query

A query a ser executada.

result_type

O parâmetro opcional result_type aceita uma constante e determina como a matriz retornada será indexada. Usando SQLITE_ASSOC irá retornar apenas os índices associativos (campos com nomes) enquanto SQLITE_NUM irá retornar apenas os índices numéricos (campos com números). SQLITE_BOTH irá retornar ambos os índices, numérico e associativo. SQLITE_BOTH é o padrão para esta função.

error_msg

A especificada variável que será preenchida se um erro ocorrer. Isto é especialmente importante porque a os erros de sintaxe SQL não podem ser obtidos usando a função sqlite_last_error().

Nota: Duas sintaxes alternativas são suportaas para compatibilidade com outras extensões de banco de dados( como o MySQL). A forma preferida é a primeira, aonde o parâmetro dbhandle é o primeiro parãmetro da função.

Valor Retornado

Esta função irá retornar um manipulador de resultado ou FALSE em falha. Para queries que retornam linhas, o manipulador de resultado pode então ser usado com funções como sqlite_fetch_array() e sqlite_seek().

Qualquer que seja o tipo da query, esta função irá retornar FALSE se houver uma falha.

sqlite_query() retorna um resultado guardado em buffer e navegavel. Isto é util para query pequenas aonde você necessita acessar de forma aleatória as linhas. Resultados guardados em buffer irão alocar memoria para guardar todo o resultado e não irão retornar até que todo o resultado tenha sido retornado. Se você necessita apenas acesso sequencial aos dados, é recomendado que você use ao invés a função sqlite_unbuffered_query() que é muito mais rapida.

Histórico

Versão Descrição
5.1.0 Adicionado o parâmetro error_msg

Notas

Aviso

SQLite irá executar multiplas query separadas por ponto e virgula, assimvocê pode executar um lote de SQL que você tenha carregado de um arquivo ou colocado em um script. Entretando, isto funciona apenas quando o resultado de uma função não é usado - se for usado, apenas o primeiro comando SQL será executado. A função sqlite_exec() irá sempre executar multiplos comandos SQL.

Quando executar multiplas query o valor de retorno desta função será FALSE se houver um erro, mas indefinido em outro caso (pode ser TRUE para sucesso ou retornar um conjunto de resultados).



sqlite_rewind> <sqlite_prev
Last updated: Fri, 14 Nov 2008
 
add a note add a note User Contributed Notes
sqlite_query
helmakil at gmail dot com
05-Feb-2008 01:58
I suppose this could be useful for users attempting to use a sqlite database for the first time.
<?php
$database
= new SQLiteDatabase($yourfile, 0666, $error);
if (!
$database) {
   
$error = (file_exists($yourfile)) ? "Impossible to open, check permissions" : "Impossible to create, check permissions";
    die(
$error);
}
$query = $database->query("SELECT name FROM sqlite_master WHERE type='table'", SQLITE_ASSOC, $query_error); #Lists all tables
if ($query_error)
    die(
"Error: $query_error"); #This means that most probably we catch a syntax error
if (!$query)
    die(
"Impossible to execute query.") #As reported above, this means that the db owner is different from the web server's one, but we did not commit any syntax mistake.
print $query->numRows();
while (
$row = $query->fetch())
    print(
$row['name']."\n");
?>
i suppose that the example above is also useful because it will list all the tables created, giving also comprehension of what appens when managing a sqlite database in OO mode.
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_rewind> <sqlite_prev
Last updated: Fri, 14 Nov 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites