PHP错误消息:致命错误:在非对象上调用成员函数bindParam()

时间:2014-12-15 13:18:40

标签: php mysql sqlite pdo

我将数据库从MySQL移到了SQLite。

我现在收到一条错误消息:

  

致命错误:在非对象中调用成员函数bindParam()   第9行的C:\ inetpub \ wwwroot \ calendar \ insert.php

这是脚本:

<?php
session_start();

$dbh = new PDO('sqlite:database.sqlite');

$stmt = $dbh->prepare("INSERT INTO events (fn, sn, bn, sd, ed) VALUES (:fn, :sn, :bn, STR_TO_DATE(:dp1,'%Y-%m-%d'), DATE_ADD(STR_TO_DATE(:dp2,'%Y-%m-%d'), INTERVAL 1 DAY))");

foreach ($_POST as $key => $value) {
    $stmt->bindParam("$key", $_POST[$key]);
}

$stmt->execute();

header("Location: /");
?>

我想这与SQLite有关,因为我没有在MySQL上收到此错误消息。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

STR_TO_DATE(:dp1,'%Y-%m-%d'), DATE_ADD(STR_TO_DATE(:dp2,'%Y-%m-%d'), INTERVAL 1 DAY)

SQLLite未提供您在查询中使用的日期函数,因此prepare调用失败,导致下一行出错。