⑴ ubuntu下php調用sqlite資料庫Call to undefined function sqlite_open()
的的未定義功能sqlite_open()
首先,你肯定打開在php.ini文件擴展= p??hp_sqlite3.dll和擴展的支持(Windows 7環境下php5.4 php_pdo_sqlite.dll,例如)。二看在你的ext文件夾中的兩個文件。如果你沒有去重新下載正式版(不要下載一些非官方的網站程序,安全性難以保證)。
有一個可能的原因這個錯誤PHP核心引擎無法找到你的php.ini文件中的配置,然後使用默認配置(內置在最簡單的配置,所以很多的擴展不添加)。我不教你。
PHP如何手動設置開發環境,你想了解的PHP的工作原理,去圖書館看。 「Php5.4.6配置教程」
⑵ 求:哪位高手幫寫個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的問題
這里應該是查詢id=2的記錄,函數fetchArray返回的是一個數組,該數組包含索引也包含欄位名作為數組的key,也就是說$row[0]就相當於$row->id,$row[1]相當於$row->name。
⑷ Linux 系統如何設置php對sqlite3的支持
for Linux(rpm)
1.下載源 wget http://www.sqlite.org/sqlite-3.5.4.tar.gz
tar zxvf sqlite-3.5.4.tar.gz
cd sqlite-3.5.4
2.配置
./configure-----配置環境
make----------- 編譯sqlite源碼
make install-----安裝sqlite
若make的時候有發生找不到tcl相關的library時,可以利用下列指令:
./configure –disable-tcl –prefix=/usr/local/sqlite-3.3.5
debian: ./configure –disable-tcl
Ubuntu:./configure –prefix=/usr/local/sqlite-3.3.5
那就簡單了.:
debian: apt-get install libsqlite3-tcl
Ubuntu:apt-get install sqlite3
就行了
然後:
for linux(套件管理程序安裝)
可以利用 apt-get(Ubuntu/Debian)或 yum(Fedora)來直接下載,
Ubuntu:apt-get install sqlite
Debian:yum
若 SQLite 要與 PHP 搭配使用,則需要為 PHP 特別安裝套件,可利用各個 distros 的套件管理軟體來安裝(以Ubuntu為例):
for PHP4:
apt-get install php4-sqlite
for PHP5:
apt-get install php5-sqlite
收工
⑸ 如何讓php支持sqlite
你好,php默認設置不支持,sqlite資料庫,如果你的是windows系統,那麼在php.ini找到extension=php_sqlite.dll這行,把前面的那個#號去掉,重啟nignx或者apache就行了。。。如果是linux系統。。就有點麻煩。。可能得編譯擴展模塊。。具體才復雜。。還跟支持庫有關,一般去網上找個教程。。對著做就沒啥問題。謝謝。
⑹ php 配置sqlite
PHP5已經綁定sqlite
1、手動添加的php的pdo的驅動擴展支持,在PHP.ini添加
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
extension_dir="C:"
2、在C:保證有php_sqlite.dll,php_pdo_sqlite.dll,
php_pdo.dll擴展庫
3、重啟apache
4、下載SQLitemanager,createadatabase,保存名「db.sqlite」的資料庫,建表,
或者sqliteadmin
5、在PHP鏈接SQLite
方法一、$db=newPDO('sqlite:db.sqlite');
print_r($db);
$sth=$db->query("select*fromaqo");
方法二、if($db=sqlite_open('db.db',0666,$sqliteerror)){
sqlite_query($db,'CREATETABLEfoo(barvarchar(10))');
sqlite_query($db,"INSERTINTOfooVALUES('fnord')");
$result=sqlite_query($db,'selectbarfromfoo');
var_mp(sqlite_fetch_array($result));
}else{
die($sqliteerror);
}
⑺ php通過pdo連上了sqlite,如何獲取所有表及表結構
如果想列出該資料庫中的所有表,可:.table如果想查看這些表的結構:select * from sqlite_master where type="table";可以看到類似: 默認情況下,不會出現紅框中的表頭,需要之前設置,命令為:.header on如果只想查看具體一張表的表結構,比如查看emperors表,命令為:select * from sqlite_master where type="table" and name="emperors";另外,也可以這樣:sqlite> .schema emperors
CREATE TABLE emperors( id integer primary key autoincrement, name text,dynasty text,start_year text);
⑻ PHP如何調用sqlite資料庫
可以使用PDO抽象數據層技術:
$conn=new PDO("sqlite:D:/database/bagecms.db");
$loginstr="select * from UserTab where UserId=? and UserPwd=?";
$sth=$conn->prepare($loginstr);
$sth->bindValue(1,$userid,PDO::PARAM_STR);
$sth->bindValue(2,$userpwd,PDO::PARAM_STR);
$sth->execute();
$res=$sth->fetch();
if($res && ($_POST["chk"]==$_SESSION["srcnum"]))
{
echo("<div>歡迎您,".$res["UserId"]."</div>");
echo("<a href='exam.php'>點擊進入主頁</a>");
$_SESSION["ut"]=$res["UserId"];
}else
{
echo("<div>登錄失敗!</div><div>用戶名、密碼或者 驗證碼不正確</div>");
⑼ ThinkPHP如何連接sqlite資料庫
首先在:ThinkPHP\Lib\掘碼Think\Db\Driver中添加DbSqlite.class.php驅動,然後在php5的配置文件中啟用extension=php_sqlite.dll,且這個配褲穗置一判純哪定要放在最後
⑽ php 怎樣像連接mysql 一樣連接sqlite3 並向資料庫插入數據的操作
只要你正確安裝好環境(網上大把,安裝失敗資料庫都找不到。)
然後你寫:
<?php
mysql_connect('localhost','root','123');//llocalhost主機名,root用戶名,123密碼
mysql_select_db('sqlite3');//連接資料庫sqlite3
mysql_query("MySQL語句");//MySQL語句就像是你在mysql一樣用就行了
?>
執行,然後你去資料庫臉看看有沒有