心血来潮想做一个网站,具体干什么暂时还是不透露了,因为我也不确定能不能搞出来,这不,刚开始就踩到坑了。
这算是第一次近距离接触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();
?>