Mysql:在非对象上调用成员函数bind_param()

时间:2014-06-20 22:46:41

标签: php mysql usercake

使用usercake,我在注册页面添加了一个额外的字段来记录用户兴趣并将其存储在名为interest的表中。

由于我没有存储在同一个表中,我需要创建一个单独的查询,如下所示。请注意,用户提供的数据将转换为数组。

这是我的问题:

//add interests1
                $interestsArray = explode(',', $this->interests);
                $interests1 = $interestsArray[0];
                $interests2 = $interestsArray[1];
                $interests3 = $interestsArray[2];
                $interests4 = $interestsArray[3];
                $interests5 = $interestsArray[4];
                $this->interests1 = sanitize($interests1);
                $this->interests2 = sanitize($interests2);
                $this->interests3 = sanitize($interests3);
                $this->interests4 = sanitize($interests4);
                $this->interests5 = sanitize($interests5);
                $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."interests (
                    interest
                    )
                    VALUES (
                    ?
                    )");
                $stmt->bind_param("s", $this->interests1);
                $stmt->execute();
                $stmt->close(); 

但是我收到以下错误:

Fatal error: Call to a member function bind_param() on a non-object in /path/models/class.newuser.php on line 218

但是代码中没有第218行......让我感到困惑。我希望最终将列中的每个变量存储在不同行的列中。 你们有什么建议?

如果有帮助,则指向全班的链接:linktocode

1 个答案:

答案 0 :(得分:1)

由于某些原因数据库错误, $ stmt可能是FALSE,例如没有连接,USE没有选择数据库,表不存在aso。检查数据库错误并将其写入日志。

if(mysqli_connect_errno())
{
  // log somewhere mysqli_connect_error()
}
else
{
  if($stmt = $mysqli->prepare("INSERT ..."))
  {
    $stmt->bind_param("s", $this->interests1);
    $stmt->execute();
  }
  else
  {
    // log somewhere $mysqli->error;
  }
}