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 に答える