IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    SQLite设置自增主键

    Tokin发表于 2016-08-30 08:53:56
    love 0

    心血来潮想做一个网站,具体干什么暂时还是不透露了,因为我也不确定能不能搞出来,这不,刚开始就踩到坑了。

    这算是第一次近距离接触SQLite吧,算是脱离文本数据库的一小步(虽然SQLite也有类似文本数据库的味道),第一次用php+sql,操作起来有点小激动,按照教程来做,感觉无比顺利,成功完成了增删改查,于是打算开始着手写点什么,比如一个简单的记事本。

    Runoob给的创建表的代码如下:

    $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;
    

    然后数据是这么插入的:

    $sql =<<<EOF
                INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
                VALUES (1, 'Paul', 32, 'California', 20000.00 );
    
                INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
                VALUES (2, 'Mark', 25, 'Rich-Mond ', 65000.00 );
    EOF;
    

    按照这种方式创建的表,再执行插入,我发现ID字段并不能自动增加,难道要每次都手动给一个ID?那岂不太坑了,于是想着当初学MSSQL的时候有自增ID这一说,上网搜了一下,发现了 INTEGER PRIMARY KEY AUTOINCREMENT 但是实际应用中,我怎么都没有正确插入值,疯狂郁闷。

    事情真是莫名其妙,刚试了一下,竟然神奇的可以自增了,好吧,不管那么多了,能正常用就可以,下面列出我的代码,仅供参考:

    <?php
    //配置(创建)数据库
    class MyDB extends SQLite3
    {
         function __construct()
         {
                $this->open('test.db');
         }
    }
    $db = new MyDB();
    if(!$db){
         echo $db->lastErrorMsg().'<br>';
    } else {
         echo "卧槽,竟然打开了<br>";
    }
    /*
    下面就要创建一个叫 COMPANY 的表,如果存在则插入,不存在则创建
    -- 创建ID列,int类型,主键,自增
    -- 昵称,text类型,不允许为空
    -- 年龄
    -- 地址,最多50字
    -- 薪水
    */
    $sql =<<<EOF
            CREATE TABLE COMPANY (
            ID              INTEGER             PRIMARY KEY          AUTOINCREMENT,
            NAME            TEXT            NOT NULL,
            AGE             INT             NOT NULL,
            ADDRESS         CHAR(50),
            SALARY          REAL
            );
    EOF;
    
    $ret = $db->exec($sql);
    if(!$ret){
            echo $db->lastErrorMsg().'<br>';
    } else {
            echo "不错,表(zi)创建成功了<br>";
    }
    
         $sql =<<<EOF
                INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
                VALUES ('Paulsada', 32, 'Calfornia', 200.00 );
    EOF;
    
         $ret = $db->exec($sql);
         if(!$ret){
                echo $db->lastErrorMsg().'<br>';
         } else {
                echo "666,这条数据也插入成功了<br><br>";
         }
    
    
    $sql =<<<EOF
            SELECT * from COMPANY;
    EOF;
    
         $ret = $db->query($sql);
         while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
                echo "ID = ". $row['ID'] . "<br>";
                echo "NAME = ". $row['NAME'] ."<br>";
                echo "ADDRESS = ". $row['ADDRESS'] ."<br>";
                echo "SALARY =  ".$row['SALARY'] ."<br><br>";
         }
         echo "简直没谁了,竟然从库里读出来了数据<br>";
    
         $db->close();
    ?>
    



沪ICP备19023445号-2号
友情链接