sqlite 获取插入的id_php封装的sqlite操作类

sqlite在php中是默认安装的本地小型化数据库,类似于xml的小型数据库,但sqlite功能更强。

sqlite.class.php文件:

<?php

   class sqliteDB{

       private $sqliteResult;
       private $error = '';
       private $createTable = <<<TABLE
             /*初始化创建数据表,可创建多个表*/
             CREATE TABLE COMPANY
            (ID       INT PRIMARY KEY NOT NULL,
             NAME     TEXT            NOT NULL,
             AGE      INT             NOT NULL,
             DDRESS   CHAR(50),
             SALARY   REAL);
      
              /*初始化插入数据,可插入多个数据*/
              INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
              VALUES (1, 'Paul', 32, 'California', 20000.00 );
              
TABLE;
       
         function __construct($fileName){
              //如果有数据库,则打开数据库
              //如果没有数据库,则创建数据库,并且生成数据表及插入数据
             if(file_exists($fileName)){
                  $this->sqliteResult = new MyDB($fileName);
                  if(!$this->sqliteResult){
                          die("Database error:" . $this->sqliteResult->lastErrorMsg());
                   }
               }else{
                  $this->sqliteResult = new MyDB($fileName);
                  if(!$this->sqliteResult){
                          die("Database error:" . $this->sqliteResult->lastErrorMsg());
                   }
               
                   $this->execute($this->createTable);
               }
         }
         //此方法用于“增、删、改”
         function execute($sql){
              $this->error= $this->sqliteResult->exec($sql);
         }
         //此方法用于“查”
         function queryDB($sql){
               $result = $this->sqliteResult->query($sql);
               $i = 0;
               while($row = $result->fetchArray(SQLITE3_ASSOC) ){
                       $arr[$i] = $row;
                       $i += 1;
               }
               return $arr;
           }
         
         function __destruct(){
               if(!$this->error){
                       die("Database error:" . $this->sqliteResult->lastErrorMsg());
               }
               
              $this->sqliteResult->close();
         }
    }
    
   class MyDB extends SQLite3{
      function __construct($fileName){
         $this->open($fileName);
      }
   }

index.php文件:

<?php
   include_once("sqlite.class.php");
    
   $sqliteInsert =<<< EOF
      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
EOF;

   $sqliteDelete =<<< EOF
      DELETE from COMPANY where ID=2;
EOF;

    $sqlUpdata =<<< EOF
           UPDATE COMPANY set SALARY = 28666.00 where ID=1;
EOF;

   $sqlSelect =<<<EOF
          SELECT * from COMPANY;
EOF;
    
    $db = new sqliteDB("test.db");
    /*
     * $db = new sqliteDB(':memory:');
     * 如果文件名赋值为':memory:',那么 SQLite3::open() 将会在
     * RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。
     */

    foreach($db->queryDB($sqlSelect) as $value){
            if($value["ID"] == 3 OR $value["ID"]== 4){
                      $isNull = true;
             }
    }
    
    if(!$isNull){
    //增加数据
            $db->execute($sqliteInsert);
    }
    //删除数据
    $db->execute($sqliteDelete);
    //修改数据
    $db->execute($sqlUpdata);
    echo "<pre>";
    //查询数据
    print_r($db->queryDB($sqlSelect));
    echo "</pre>";

执行后的效果图:

v2-9c34ba7b7d0abcb50a20de9aa3f42909_b.jpg

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要

PHP进阶架构师>>>视频、面试文档免费获取​docs.qq.com
v2-2686790c46d4e5db4d4b344c23a17517_ipico.jpg

或 者关注咱们下面的知乎专栏

PHP架构师圈子​zhuanlan.zhihu.com
v2-050aa4d22c1c9264fbebbd6695b8853e_ipico.jpg
作者:热血夺刀   来源:https://www.cnblogs.com/qingsong/p/10760401.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值