你自己检查$conn->beginTransaction(); 
$conn->exec("INSERT INTO books (title,author) values ('je','dd')"); 
$conn->commit(); 的返回值呀
默认这些操作是不抛出异常的
在new PDO以后的时候指定相应的属性或选项才会抛出异常的
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

解决方案 »

  1.   

    加入了抛出异常Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1 near "TABLE": syntax error' in /usr/www/users/hkl/book.php:4 Stack trace: #0 /usr/www/users/hkl/book.php(16): PDO->exec('INSERT INTO boo...') #1 {main} thrown in /usr/www/users/hkl/book.php on line 4insert into 出错,但是找不到出错原因
      

  2.   


    是啊,但是我没看出语法错误啊,books是表,里面有2个字段: title,author,都是字符型的长度255,我已经建好了,里面有几行数据,用“select * from books”就OK,数据也能显示出来,但是一插入数据就出错。折腾了一天了,也没搞定啥,大侠有没有知道的,分不够在加。
      

  3.   

    是不是我的虚拟主机不支持写数据到数据库是只读型,我上传完数据库sumbook.db把它的读权限、写权限、运行权限都加上了啊。
      

  4.   

    别瞎怀疑!!!就是语法错误,会不会 title是sqlite sql中的关键字什么的?
      

  5.   


    我也怀疑title,所以重新建了一个数据库不用title作为字段用ABCD做字段还是报错了。Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 14 unable to open database file' in /usr/www/users/aaa/000e.php:16 Stack trace: #0 /usr/www/users/aaa/000e.php(16): PDO->exec('INSERT INTO boo...') #1 {main} thrown in /usr/www/users/aaa/000e.php on line 16<?php 
    $conn = new PDO('sqlite:sumbook.db'); // success 
    $conn->beginTransaction(); 
    $conn->exec("INSERT INTO books (abcd,author1) values ('je','dd')"); 
    $conn->commit(); 
    ?>
      

  6.   

    加了$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      

  7.   

    我没用过PDO,不过你的SQL语句可以加上数据库名试试,我这里用xxxxx
    INSERT INTO xxxxx.books (abcd,author1) values ('je','dd');
      

  8.   

    上面的错误不说了吗?是打不开数据库文件
    我试过了insert 语句没有问题!!!
      

  9.   


    但是用“select * from books”就OK,数据也能显示出来,但是一插入数据就出错。说明数据库是能打开的,是好的。
      

  10.   


    但是用“select * from books”就OK,数据也能显示出来,但是一插入数据就出错。说明数据库是能打开的,是好的。
      

  11.   

    你自己用命令行的工具sqlite3先试一下!我一般是吧sqlite3.exe放到C:\Windows里面的
    然后 sqlite3 book.db
    进去以后试试你的sql insert语句吧
      

  12.   

    把你的 sql语句打印出来,看有错没有