设计笔记

  • 首页
  • 作品
  • 代码
  • 随笔
  • 关于博主
    • 豆瓣书影
  • 友情链接
  • 文章归档
  • 榜上有名
  • RSS Feed
  • GitHub
  • Twitter
  • Link

喜欢这款主题

抢先体验

SQLite设置自增主键

  • Tokin
  • 2016-08-30
  • 35

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

这算是第一次近距离接触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();
?>

© 2025 设计笔记
Theme by Wing
  • {{ item.name }}
  • {{ item.name }}