PHP連接SQLite數(shù)據(jù)庫

SQLite3擴展名在PHP 5.3.0+以上都會默認(rèn)啟用您宪∶涣可以在編譯時使用--without-sqlite3來禁用它喂很。

Windows用戶可通過啟用php_sqlite3.dll才能使用此擴展曹步。 php_sqlite3.dll默認(rèn)包含在PHP 5.3.0之后的PHP發(fā)行版中糊饱。

有關(guān)詳細(xì)的安裝說明径荔,請查看PHP教程及其官方網(wǎng)站督禽。

連接到SQLite數(shù)據(jù)庫

以下PHP代碼顯示如何連接到SQLite數(shù)據(jù)庫。 如果數(shù)據(jù)庫不存在总处,那么它將創(chuàng)建一個新的數(shù)據(jù)庫狈惫,最后將返回一個數(shù)據(jù)庫對象。

<?php
   class SQLiteDB extends SQLite3
   {
      function __construct()
      {
         $this->open('phpdb.db');
      }
   }
   $db = new SQLiteDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Yes, Opened database successfully\n";
   }
?>

現(xiàn)在鹦马,運行上面的程序在當(dāng)前目錄中創(chuàng)建指定數(shù)據(jù)庫:phpdb.db胧谈。可以根據(jù)需要更改路徑荸频。 如果數(shù)據(jù)庫成功創(chuàng)建菱肖,則會提供以下消息:

在執(zhí)行上面語句后,應(yīng)該也會在相同的目錄下自動創(chuàng)建一個名稱為:phpdb.db的數(shù)據(jù)庫文件旭从。如下所示 -

創(chuàng)建表

以下PHP程序?qū)⒂糜谠谏厦鎰?chuàng)建的數(shù)據(jù)庫(phpdb.db)中創(chuàng)建一個表:

<?php
class SQLiteDB extends SQLite3
{
  function __construct()
  {
     $this->open('phpdb.db');
  }
}
$db = new SQLiteDB();
if(!$db){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Opened database successfully<br/>\n";
}

$sql =<<<EOF
      CREATE TABLE company
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);
EOF;

$ret = $db->exec($sql);
if(!$ret){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Table created successfully<br/>\n";
}
$db->close();

當(dāng)執(zhí)行上述程序時稳强,它將在數(shù)據(jù)庫(phpdb.db)中創(chuàng)建一個名稱為:company的表,并顯示以下消息:

插入數(shù)據(jù)操作

以下PHP程序顯示了如何在上述示例中創(chuàng)建的company表中插入數(shù)據(jù)記錄:

<?php
class SQLiteDB extends SQLite3
{
  function __construct()
  {
     $this->open('phpdb.db');
  }
}
$db = new SQLiteDB();
if(!$db){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Opened database successfully<br/>\n";
}

// 先刪除后創(chuàng)建表
$sql = "DROP table company";
$ret = $db->exec($sql);

// 創(chuàng)建表語句

$sql =<<<EOF
      CREATE TABLE if not exists company
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);
EOF;

$ret = $db->exec($sql);
if(!$ret){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Table created successfully<br/>\n";
}

// $db->close();

$sql =<<<EOF
      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Maxsu', 26, 'Haikou', 20000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Guangzhou', 15000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Tenny', 23, 'Shanghai', 20000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Weiwang', 25, 'Beijing ', 65000.00 );
EOF;

   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Yes, Some Records has Inserted successfully<br/>\n";
   }
   $db->close();

當(dāng)執(zhí)行上述程序時遇绞,將向company表中插入給定的記錄键袱,并顯示如下:

SELECT操作

以下PHP程序顯示了如何從上述示例中創(chuàng)建的company表中獲取并顯示數(shù)據(jù)記錄:

<?php
class SQLiteDB extends SQLite3
{
  function __construct()
  {
     $this->open('phpdb.db');
  }
}
$db = new SQLiteDB();
if(!$db){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Opened database successfully<br/>\n";
}

// 先刪除后創(chuàng)建表
$sql = "DROP table company";
$ret = $db->exec($sql);

// 創(chuàng)建表

$sql =<<<EOF
      CREATE TABLE if not exists company
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);
EOF;

$ret = $db->exec($sql);
if(!$ret){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Table created successfully<br/>\n";
}

// $db->close();

$sql =<<<EOF
      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Maxsu', 26, 'Haikou', 20000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Guangzhou', 15000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Tenny', 23, 'Shanghai', 20000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Weiwang', 25, 'Beijing ', 65000.00 );
EOF;

$ret = $db->exec($sql);
if(!$ret){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Some Records has Inserted successfully<br/>\n";
}

// 查詢表中的數(shù)據(jù)

echo "<b> Select Data from company table :</b><hr/>";

$sql =<<<EOF
  SELECT * from COMPANY;
EOF;

$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  echo "ID = ". $row['ID'] . "<br/>\n";
  echo "NAME = ". $row['NAME'] ."<br/>\n";
  echo "ADDRESS = ". $row['ADDRESS'] ."<br/>\n";
  echo "SALARY =  ".$row['SALARY'] ."<br/>\n\n";
  echo '----------------------------------<br/>';
}

echo "Operation done successfully\n";

$db->close();

執(zhí)行上述程序時摹闽,會產(chǎn)生以下結(jié)果:

更新操作

以下PHP代碼顯示了如何使用UPDATE語句來更新記錄,然后從company表中獲取并顯示更新的記錄:

<?php
class SQLiteDB extends SQLite3
{
  function __construct()
  {
     $this->open('phpdb.db');
  }
}
$db = new SQLiteDB();
if(!$db){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Opened database successfully<br/>\n";
}

// 先刪除后創(chuàng)建表
$sql = "DROP table company";
$ret = $db->exec($sql);

// 創(chuàng)建表

$sql =<<<EOF
      CREATE TABLE if not exists company
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);
EOF;

$ret = $db->exec($sql);
if(!$ret){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Table created successfully<br/>\n";
}

// $db->close();

$sql =<<<EOF
      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Maxsu', 26, 'Haikou', 20000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Guangzhou', 15000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Tenny', 23, 'Shanghai', 20000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Weiwang', 25, 'Beijing ', 65000.00 );
EOF;

$ret = $db->exec($sql);
if(!$ret){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Some Records has Inserted successfully<br/>\n";
}

// 更新ID=1的薪水為:29999

$sql = 'UPDATE COMPANY set SALARY = 29999.00 where ID=1';
$ret = $db->exec($sql);
if(!$ret){
  echo $db->lastErrorMsg();
} else {
  echo $db->changes(), " Record(ID=1) updated successfully<br/>\n";
}


// 查詢表中的數(shù)據(jù)

echo "<b> Select Data from company table :</b><hr/>";

$sql =<<<EOF
  SELECT * from COMPANY;
EOF;

$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  echo "ID = ". $row['ID'] . "<br/>\n";
  echo "NAME = ". $row['NAME'] ."<br/>\n";
  echo "ADDRESS = ". $row['ADDRESS'] ."<br/>\n";
  echo "SALARY =  ".$row['SALARY'] ."<br/>\n\n";
  echo '----------------------------------<br/>';
}

echo "Operation done successfully\n";

$db->close();

執(zhí)行上述程序時澜汤,會產(chǎn)生以下結(jié)果:

刪除操作

以下PHP代碼顯示了如何使用DELETE語句刪除任何記錄,然后從company表中獲取并顯示剩余的記錄:

<?php
class SQLiteDB extends SQLite3
{
  function __construct()
  {
     $this->open('phpdb.db');
  }
}
$db = new SQLiteDB();
if(!$db){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Opened database successfully<br/>\n";
}

// 先刪除后創(chuàng)建表
$sql = "DROP table company";
$ret = $db->exec($sql);

// 創(chuàng)建表

$sql =<<<EOF
      CREATE TABLE if not exists company
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);
EOF;

$ret = $db->exec($sql);
if(!$ret){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Table created successfully<br/>\n";
}

// $db->close();

$sql =<<<EOF
      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Maxsu', 26, 'Haikou', 20000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Guangzhou', 15000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Tenny', 23, 'Shanghai', 20000.00 );

      INSERT INTO company (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Weiwang', 25, 'Beijing ', 65000.00 );
EOF;

$ret = $db->exec($sql);
if(!$ret){
  echo $db->lastErrorMsg();
} else {
  echo "Yes, Some Records has Inserted successfully<br/>\n";
}

// 更新ID小于等于2的數(shù)據(jù)記錄

$sql =<<<EOF
  DELETE from COMPANY where ID<=2;
EOF;
$ret = $db->exec($sql);
if(!$ret){
 echo $db->lastErrorMsg();
} else {
  echo $db->changes(), " Record(ID<=2) deleted successfully<br/>\n";
}

// 查詢表中的數(shù)據(jù)

echo "<b> Select Data from company table :</b><hr/>";

$sql =<<<EOF
  SELECT * from COMPANY;
EOF;

$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
  echo "ID = ". $row['ID'] . "<br/>\n";
  echo "NAME = ". $row['NAME'] ."<br/>\n";
  echo "ADDRESS = ". $row['ADDRESS'] ."<br/>\n";
  echo "SALARY =  ".$row['SALARY'] ."<br/>\n\n";
  echo '----------------------------------<br/>';
}

echo "Operation done successfully\n";

$db->close();

執(zhí)行上述程序時谁不,會產(chǎn)生以下結(jié)果:

由于其它操作都類似,只需寫上對應(yīng)SQL語句徽诲,然后使用PHP執(zhí)行即可刹帕,所以其它的示例在這里就不再一一演示了。如有疑問谎替,可以留言聯(lián)系偷溺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钱贯,隨后出現(xiàn)的幾起案子挫掏,更是在濱河造成了極大的恐慌,老刑警劉巖秩命,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尉共,死亡現(xiàn)場離奇詭異,居然都是意外死亡弃锐,警方通過查閱死者的電腦和手機袄友,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拿愧,“玉大人杠河,你說我怎么就攤上這事〗焦迹” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵唾戚,是天一觀的道長柳洋。 經(jīng)常有香客問我,道長叹坦,這世上最難降的妖魔是什么熊镣? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮募书,結(jié)果婚禮上绪囱,老公的妹妹穿的比我還像新娘。我一直安慰自己莹捡,他們只是感情好鬼吵,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著篮赢,像睡著了一般齿椅。 火紅的嫁衣襯著肌膚如雪琉挖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天涣脚,我揣著相機與錄音示辈,去河邊找鬼。 笑死遣蚀,一個胖子當(dāng)著我的面吹牛矾麻,可吹牛的內(nèi)容都是我干的射富。 我是一名探鬼主播粥帚,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芒涡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了费尽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤查描,失蹤者是張志新(化名)和其女友劉穎冬三,沒想到半個月后缘缚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡窝爪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年蒲每,在試婚紗的時候發(fā)現(xiàn)自己被綠了邀杏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡淮阐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浩姥,到底是詐尸還是另有隱情状您,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布眯分,位于F島的核電站柒桑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏飘诗。R本人自食惡果不足惜界逛,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一息拜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喳瓣,春花似錦狈茉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至实昨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荒给,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工曙咽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挑辆,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓洒嗤,卻偏偏與公主長得像魁亦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子间唉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容