2017-04-16 58 views
0

请朋友们帮助我。我找不到错在哪里。我需要更新的所有变量都很好,但实际的更新语句返回有错误说未被捕获的错误:调用成员函数prepare()null

"Uncaught Error: Call to a member function prepare() on null"

下面是我的一小段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(); 
+0

这'SET profile_picture = '$ name_image',上次更改时间= $时间''不会将'$ name_image'和'$ time'值插入到您准备好的语句中。将它们作为参数绑定? –

+0

感谢让我试试 –

回答

0

至少有两个问题。

  1. $conn未初始化这是因为$conn为空,为什么你得到这个错误,你试图调用null对象的成员函数。

如果您需要协助解决问题,请包括您的$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); 
+0

我已经尝试使用绑定参数,如上所述,但我一直得到相同的错误 –

+0

你检查过你的三个变量有值吗?他们中的任何一个是空的?你的数据库连接'$ conn'是否已经被初始化了? –

+0

是啊我的值不是空的,但最后修改的列在我的数据库中是空的,这可能是一个问题吗? –

相关问题