本文目錄一覽:
- 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一樣啊。使用的時候看的仔細一些,那些函數需要申請空間,調用什麼函數進行釋放等都有詳細的說明。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/197047.html