1

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

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

这是我的查询:

//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

4

1 回答 1

1

$stmt 可能是FALSE由于某种原因导致的数据库错误,例如没有连接,没有选择数据库USE,表也不存在。检查数据库错误并将它们写入日志。

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;
  }
}
于 2014-06-20T23:21:34.057 回答