PHP SQLite帮助需要从post数据输入


PHP SQLite help needed inputting from post data

我有以下代码:

try
   {
       $DBH = new PDO('sqlite:dataDb_PDO.sqlite');
       $stmt = $DBH->prepare("INSERT INTO table(Firstname,Lastname,Datetime) VALUES(:field1,:field2,Datetime('now')");
       $stmt->execute(array(':field1' => $_POST['Pfirstname'], ':field2' => $_POST['Plastname']));

       $db = NULL;

   }
   catch(PDOException $e)
   {
       print 'Exception : '.$e->getMessage();
   }

但是,不管我怎么做,我都得到错误

2015/05/18 08:45:51 [error] 14466#0: *907 FastCGI在stderr中发送:"PHP message: PHP致命错误:调用成员函数execute()在/var/HTTP/submit.php的非对象上的第44行",同时读取响应头,client: xx, server:, request: "POST/submit.php HTTP/1.1", upstream: " FastCGI://unix:/var/run/php5-fpm。袜子:",主持人:"192.168.44.129",引用:"http://xx/"

几天来,我一直在尝试在网上遵循各种例子,但一无所获。请帮助! ?

table在sqlite中是一个保留字,所以你需要引用它:

$stmt = $DBH->prepare("INSERT INTO `table`(Firstname,Lastname,Datetime) VALUES(:field1,:field2,Datetime('now')");

除此之外,你可能应该设置PDO来抛出异常,这样它就会直接告诉你哪里出了问题:

$DBH = new PDO('sqlite:dataDb_PDO.sqlite');
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

你的sql查询是错误的,它是失败的,你不能在查询中使用datetime函数,如果你想插入当前日期和时间使用以下查询:

 $stmt = $DBH->prepare("INSERT INTO table(Firstname,Lastname,Datetime) VALUES(:field1,:field2, date('now')");