pdo驱动的sqlite无法写入数据

#1 晴天

我使用官方的留言本例子,把数据库换成pdo方式的sqlite,可以读取留言数据,却无法添加留言,虽然显示添加成功,但数据库里没有数据。
不知什么原因。

2010-11-11 12:50:05

#2 jake

刚刚测试过,楼主的那个sqlite文件有问题,所以无法写入数据。用sqliteadmin和其他第三方工具也打不开。
这里发一个sqlite的代码给楼主试试,有sqlite2 + 原sqlite驱动 和 sqlite3 + PDO驱动 两个方式

litegb.zip

2010-11-11 14:05:03

#3 晴天

我使用您的例子和数据库就完全正常,但用我的数据库就是不能插入,而只能读出,我的数据库是用sqlite3.exe在命令行下创建的,我用sqliteadmin是能打开他的。
我在您的代码中加了obj->dumpSql(),下面是显示的结果。
下面是我的数据库用您的代码显示的内容:
点击这里新增
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => ha
            [title] => test
            [contents] => ffffff
        )

    [1] => Array
        (
            [id] => 2
            [name] => abc
            [title] => def
            [contents] => fghkswwdfss
        )

    [2] => Array
        (
            [id] => 3
            [name] => qt
            [title] => my message
            [contents] => hello.this ismy a message
        )

    [3] => Array
        (
            [id] => 4
            [name] => qt
            [title] => my message
            [contents] => hello.this ismy a message
        )

)
下面是用我的数据库点击添加数据之后返回的sql代码:
SELECT * FROM SQLITE_MASTER WHERE name = 'guestbook' AND type='table'
返回

2010-11-11 15:08:06

#4 晴天

刚才忘了说,我用$guestbook->query($sql)是可以正常插入的。

2010-11-11 15:28:05

#5 jake

问题初步搞清楚出在哪里了,是因为SP的pdo_sqlite获取表结构的方式中,没有楼主制作的那种格式的sqlite结构。之后我会对pod_sqlite的驱动做一些调整,以便能支持这种格式的sqlite表。

不过这也许不是很好的方法,因为sqlite还可能有其他结构的文件。

或者建议楼主先使用由sqliteadmin制作的sqlite文件。

上面我说用sqliteadmin打不开楼主的sqlite文件,是因为我放到了有中文的目录里面,楼主抱歉。

2010-11-11 16:15:04

#6 jake

SP的SVN更新,解决以上问题
http://speedphp.com/bbs/thread-108-1-1.html

2010-11-11 16:37:21