關於phpnewsqlite3的信息

本文目錄一覽:

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-hant/n/197047.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-03 13:27
下一篇 2024-12-03 13:27

相關推薦

  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27
  • Dapper使用getschema獲取表信息

    本文旨在介紹Dapper中使用getschema獲取表信息的方法和注意事項。 一、獲取某張表的所有列信息 使用Dapper獲取某張表信息,可以使用 `IDbConnection.G…

    編程 2025-04-27
  • 已裝備我軍的空中信息化作戰平台

    本文將會從多個方面詳細闡述已裝備我軍的空中信息化作戰平台。 一、平台概述 已裝備我軍的空中信息化作戰平台是一個全新的作戰系統,具備實時數據採集、處理、分析、共享的能力。它可以在不同…

    編程 2025-04-27
  • 通過提交信息搜索-使用git

    本篇文章重點講解如何使用git通過提交信息來搜索。我們將從多個方面介紹如何使用git來搜索提交信息,並提供相應的代碼示例以供參考。 一、搜索方式 Git提供了三種搜索方式,分別為:…

    編程 2025-04-27
  • Linux查看系統信息

    一、CPU信息 Linux系統下,查看CPU的信息最常用的命令是lscpu。該命令可以顯示CPU架構、核心數量、線程數、緩存大小、CPU頻率等信息。例如: lscpu 該命令會輸出…

    編程 2025-04-24
  • 軟考 信息安全工程師

    軟考 信息安全工程師是一項技能型國家級資格認證考試,主要測試考生在信息安全領域的理論知識和實踐技能,是證明個人信息安全能力的重要證書。本文將從多個方面對軟考 信息安全工程師做詳細的…

    編程 2025-04-23

發表回復

登錄後才能評論