【问题标题】:PHP error message: Fatal error: Call to a member function bindParam() on a non-objectPHP 错误消息:致命错误:调用非对象上的成员函数 bindParam()
【发布时间】:2015-02-13 14:33:50
【问题描述】:

我将我们的数据库从 MySQL 移至 SQLite。

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

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

这是脚本:

<?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 上没有收到此错误消息。

有人可以帮忙吗?

【问题讨论】:

  • 这不是问题。它在 MySQL 上运行良好 8 年。

标签: php mysql sqlite pdo


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 2016-02-09
  • 1970-01-01
相关资源
最近更新 更多