文字

SQLite3::exec

(PHP 5 >= 5.3.0)

SQLite3::execExecutes a result-less query against a given database

说明

public bool SQLite3::exec ( string $query )

Executes a result-less query against a given database.

参数

query

The SQL query to execute (typically an INSERT, UPDATE, or DELETE query).

返回值

Returns TRUE if the query succeeded, FALSE on failure.

范例

Example #1 SQLite3::exec() example

<?php
$db 
= new  SQLite3 ( 'mysqlitedb.db' );

$db -> exec ( 'CREATE TABLE bar (bar STRING)' );
?>

用户评论:

[#1] namibj [2014-10-27 14:52:44]

If you use WAL (Write-Ahead Log) (link to sqlite doc for this: http://sqlite.org/wal.html ), it needs write acces because of the implementation of multi-thread access to one db. You can turn it off, if you do not want to give the dir write access, but you can also create a certain file it needs (see the link for a description, as it is explained very well there) that you need write access to and you may get away using WAL without giving write accesss to the dir.

[#2] Rob Haverkort [2013-11-03 19:57:01]

Actually, sqlite creates a journal-file when changing data and so it needs the write-permissions in the directory.

[#3] gamag [2013-03-06 21:02:12]

SQLite needs to create some temp-files (journals...) to execute certain statements, so php needs write-permission in your db-directory.

[#4] info at tellmatic dot org [2013-01-16 15:50:26]

IMPORTANT! just a note: 

weird behaviour when doing an exec on a sqlite db!!!

if want to execute a query on a sqlite db with exec, and your dbfile already was e.g. mode 777, and you get some php errors saying

"SQLite3::exec(): unable to open database file in ...."

and you get crazy while debugging, just add write ??ermissions to the whole directory for the user the webserver/php runs.

this behaviour makes absolutely NO sense, and is a source of frustration.
at least a more meaningful errormessage would be nice.
i couldnt figure out why sqlite needs write permissions for the whole dir instead of only one file. this is stupid and must be a bug!
(to be secure you have to create a directory with write permissions only for php/apache)

[#5] moodsey211 at gmail dot com [2010-12-16 15:29:10]

If you get the error message saying "SQLite3::exec. database locked." You just need to define a busyTimeout to work around this.

上一篇: 下一篇: