我有以下代码:
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')");