【问题标题】:Uncaught Error: Call to a member function prepare() on null未捕获的错误:在 null 上调用成员函数 prepare()
【发布时间】:2017-04-16 08:26:53
【问题描述】:

请朋友们帮帮我。我不知道哪里出错了。到目前为止我需要更新的所有变量都很好,但是实际的更新语句返回一个错误说

“未捕获的错误:在 null 上调用成员函数 prepare()”

下面是我的一小段php代码:

      $name_image=basename($_FILES[$idx]["name"]["$key"]);         
      $time = date("Y-m-d H:i:s");           
      $email_insert = $_SESSION['email'];
      $sql_upl ="UPDATE forepost_users SET profile_picture  ='$name_image',lastmodified ='$time' WHERE email_address=?";             
      $SQL_statement_upl= $this->conn->prepare($sql_upl);
      $SQL_statement_upl->bindParam(1,$email_insert);
      $SQL_statement_upl->execute();

【问题讨论】:

  • 这个SET profile_picture ='$name_image',lastmodified ='$time' 不会将$name_image$time 值插入到您准备好的语句中。而是将它们绑定为参数?
  • 谢谢让我试试
  • 你应该 var_dump $this->conn 并确保它返回你所期望的

标签: php jquery sql-server


【解决方案1】:

至少有两个问题。

  1. 您的$conn 未初始化,这就是您收到此错误的原因,因为$conn 为空并且您尝试调用空对象的成员函数。

如果您需要帮助解决相关问题,请提供您的 $conn 初始化代码。

  1. 您准备的语句无效。

SET profile_picture ='$name_image',lastmodified ='$time'

这部分UPDATE 语句不会将$name_image$time 的值插入到SQL 语句中。请记住,这是一个“准备好的语句”,因此您正在创建一个将多次执行的 SQL 模板。每次执行时,您都会通过绑定参数将值传递到 SQL 语句中。

所以把你准备好的语句改成:

"UPDATE forepost_users SET profile_picture = ?, lastmodified = ? WHERE email_address = ?"

然后在执行前绑定各个参数:

$SQL_statement_upl->bindParam(1,$name_image);
$SQL_statement_upl->bindParam(2,$time);
$SQL_statement_upl->bindParam(3,$_email_insert);

【讨论】:

  • 我已经尝试使用上面指出的绑定参数,但我一直收到同样的错误
  • 你检查过你的三个变量有值吗?它们中的任何一个都为空吗?你的数据库连接$conn真的被初始化了吗?
  • 是的,我的值不是空的,但我的数据库中的 lastmodified 列是空的,这可能是个问题吗?
  • 您确定您的$conn 已初始化吗?你能分享你的那部分代码吗?
  • 是的,你是对的,我没有正确初始化我的 conn 变量。我已经纠正了这一点,现在它工作正常。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
相关资源
最近更新 更多