本文目录一览:
- 1、php操作sqlite sql语句执行两次的问题
- 2、谁知道php使用sqlite3是用 new PDO 呢,,还是用 new SQLlite3 这个呢
- 3、php创建sqlite数据库后,增加内容会生成journal文件
- 4、PHP中怎么使用SQLite数据库,最好可以把创建和连接数据库的代码发出来。谢谢!急!急!急!
- 5、求:哪位高手帮写个PHP + Sqlite3 增 改 删 数据库实例 不剩感激
- 6、php sqlite3 怎么释放内存?
php操作sqlite sql语句执行两次的问题
我觉得,你这个方法对插入并不适用啊。插入返回的没有结果集,只有成功与失败。那你执行之后,还去fetchArray() 。这个就不好了吧。插入的时候,不需要去取这个啊。你应该要判断一下传进来的SQL。如果是 SELECT 开头的,则执行这句。如果是非SELECT ,比如 INSERT UPDATE DELETE 那么就不需要去执行那句。而是直接返回 $result 就行了。你的执行两句,有可能就是这个不需要执行的地方引起的。你自己加个判断,处理一下。看看是否还会插入两条记录。
谁知道php使用sqlite3是用 new PDO 呢,,还是用 new SQLlite3 这个呢
两者都可以,都需要开启php的对应扩展。
用PDO可以使代码适用于多种数据库,使得代码抽象化,脱离数据库关联。
用指定SQLite3后,代码只能用于这种数据库。
尽量用PDO。
php创建sqlite数据库后,增加内容会生成journal文件
sqlite的事务特性,journal文件是事务开始产生的,直到整个事务结束才会消失,你在完成一个事务后,必须提交这次事务才能生效,比如PHP手册里的示例:
unlink('mysqlitedb.db');
$db = new SQLite3('mysqlitedb.db');
$stmt = $db-prepare('SELECT bar FROM foo WHERE id=:id');
$stmt-bindValue(':id', 1, SQLITE3_INTEGER);
$result = $stmt-execute();
后边加个关闭连接的语句试试:$db-close();
如果还不行,就不太清楚了,试试升级下sqlite。
PHP中怎么使用SQLite数据库,最好可以把创建和连接数据库的代码发出来。谢谢!急!急!急!
首先说基本配置:
PHP SQLite 的使用和配置方法:
在PHP 5.1.x 以后自带了 SQLtie 数据库功能,只需要在配置PHP.ini中开启即可
;extension=php_sqlite.dll
在PHP 5.2.x 以后自带了 SQLtie PDO数据库功能,只需要在配置PHP.ini中开启即可
;extension=php_pdo_sqlite.dll
SQLite 数据库管理:
1、SQLiteManager与PHPmyadmin不同,需要添加管理的数据库
2、Windows下使用添加路径需要将 X: \**\** 改为 X:/**/**
3、 创建数据库的时候需要指定SQLite 数据库文件存放的路径
再说操作:
?php
$db_path = 'sqlite3_db_php';
$db = new SQLite3($db_path); //这就是创建数据库,也是连接数据库
if (!!$db) {
//下面创建一个表格
$db-exec('CREATE TABLE user (id integer primary key, name varchar(32), psw varchar(32))');
求:哪位高手帮写个PHP + Sqlite3 增 改 删 数据库实例 不剩感激
php中操作sqlite3数据库的类文件。
一般用法:
$filepath="/apps/www/htdocs/databasename";
$db=new SPSQLite3($filepath); //打开此路径数据库文件
$sql="select * from tablename"; //查询记录
$sql2="delete from tablename"; //删除表内所有记录
$db-exec_sql($sql); //执行查询语句
$db-struct_sql($sql2); //执行删除
$result=$db-get_all_data(); //返回操作记录集合
$numbers=count($result); //得到有效记录数
$fields=$result[0]["field"]; //取字段内容
$db-close(); //关闭
?
需要在装入的头文件中加入:@dl('sqlite3.so');调用动态链接库(linux中)
[@more@]
class SPSQLite3
{
var $db_name; //连接的sqlite数据库服务器的用户密码
var $db_link; //数据库连接的句柄
var $result; //执行sqlite语句的资源句柄
var $insert_autoid = 0; //增加记录时自动编号的最后一个ID号
var $get_data = array(); //获取记录内容
var $get_all_data = array(); //获取所有记录内容
var $num_rows = 0; //执行SELECT语句时获取了多少条记录
var $affected_rows = 0; //执行除SELECT语句所影响的记录行数
var $error = "";
function SPSQLite3($db_name = "sqlite")
{
$this-db_name = $db_name;
$this-open_db($db_name); //打开数据库
}
//构造函数
function __destruct()
{
$this-free();
$this-close();
}
//释放查询值
function free()
{
if ($this-result)
{
unset($this-result);
}
}
//关闭数据库连接
function close()
{
if ($this-db_link)
{
$this-free();
return @sqlite3_close($this-db_link);
}
}
//严重错误时停执行
function halt($msg)
{
$this-free();
$this-close();
//调试函数
print("
程序遇到一个严重而至命的错误,以至停止执行!
错误描述:{$msg}
");
exit(1);
}
//打开数据连接,并选择数据库
function open_db($db_name = "sqlite")
{
if ($db_name == "")
{
$db_name = $this-db_name;
}
if ($db_name == "")
{
$this-halt("未能找到指定要操作的数据库名:{$db_name}!");
}
$this-db_link = @sqlite3_open($db_name) or die ("数据库连接失败");
if ($this-db_link)
{
return $this-db_link;
}else{
$this-halt("您所要操作的文件不能写,权限不足!");
}
}
//返回sqlite连接句柄
function db_link()
{
return $this-db_link;
}
//执行对数据查询操作的SQL语句
function exec_sql($sql_cmd)
{
$this-result = @sqlite3_query($this-db_link, $sql_cmd);
return $this-result;
}
//执对数据库操作(create,update,delete,insert)的SQL语句
function struct_sql($sql_cmd)
{
$this-result = @sqlite3_exec($this-db_link, $sql_cmd);
return $this-result;
}
//获取所有数据内容存入数组中
function get_data()
{
if (!$this-result)
{
//$this-halt("没有记录可获取!");
return false;
}
$this-get_data = @sqlite3_fetch_array($this-result);
if (!is_array($this-get_data))
{
$this-get_data = null;
}
return $this-get_data;
}
//获取所有数据内容存入数组中
function get_all_data()
{
if (!$this-result)
{
//$this-halt("没有记录可获取!");
return false;
}
$this-get_all_data = array();
while ($row = @sqlite3_fetch_array($this-result))
{
$this-get_all_data[] = $row;
}
return $this-get_all_data;
}
//记录操作返回数
function num_rows()
{
if (!$this-result)
{
//$this-halt("没有记录可获取!");
return false;
}
//禁用num_rows函数..
//$this-num_rows = sqlite3_changes($this-result);
$this-num_rows = 0;
return $this-num_rows;
}
//seek函数
function seek($nu)
{
if (!$this-result)
{
//$this-halt("没有记录可获取!");
return false;
}
$seek_result = @sqlite_seek(!$this-result, $nu);
if ($seek_result)
{
return $seek_result;
}else{
$this-halt("数据记录移动范围超出了记录!");
}
}
//获取最后增加记录的自动编号
function insert_autoid()
{
$this-insert_autoid = @sqlite3_last_insert_rowid($this-db_link);
return $this-insert_autoid;
}
//执行除SELECT语句所影响的记录行数
function affected_rows()
{
$this-affected_rows = sqlite3_changes($this-db_link);
return $this-affected_rows;
}
//创建数据库函数
function create_db($db_name)
{
if ($db_name == "")
{
return false;
}
$str = "~!@#$$%^*(_+=|[{:;"'?/.,}])";
for ($i = 0; $i strlen($str); $i++)
{
if (eregi($str{$i}, $db_name))
{
return false;
}
}
return ($this-struct_sql("CREATE DATABASE {$db_name} ;")) ? true : false;
}
//删除数据库
function drop_db($db_name)
{
if ($db_name == "")
{
return false;
}
$str = "~!@#$$%^*(_+=|[{:;"'?/.,}])";
for ($i = 0; $i strlen($str); $i++)
{
if (eregi($str{$i}, $db_name))
{
return false;
}
}
return ($this-struct_sql("DROP DATABASE {$db_name} ;")) ? true : false;
}
//清空数据表
function truncate_table($t_name)
{
if ($t_name == "")
{
return false;
}
$str = "~!@#$$%^*(_+=|[{:;"'?/.,}])";
for ($i = 0; $i strlen($str); $i++)
{
if (eregi($str{$i}, $t_name))
{
return false;
}
}
return ($this-struct_sql("DELETE FROM {$t_name} ;")) ? true : false;
}
//获取最后数据库出错信息
function get_last_error()
{
$error = array();
$error["number"] = sqlite3_error($this-db_link);
$error[0] = $error["number"];
$error["string"] = sqlite3_error($error[0]);
$error[1] = $error["string"];
return $error;
}
}
?
php sqlite3 怎么释放内存?
仔细看看你用到的sqlite函数的说明,需要释放的就在该释放的地方执行释放函数。其实就像用malloc和free一样啊。使用的时候看的仔细一些,那些函数需要申请空间,调用什么函数进行释放等都有详细的说明。