1

重複の可能性:
非オブジェクトでメンバー関数 bind_param() を呼び出す

次のエラーが表示されます。

Call to a member function bind_param() on a non-object

準備されたステートメントは次のとおりです。

include('/path/to/connection/variable.php');

このファイルは、mysqli クラスのインスタンスを作成するだけで動作することが確認されています。例:

$mysqli = new mysqli("localhost", "user", "password", "db");

だから私はそれが問題ではないことを知っています...

$stmt = $mysqli->prepare("INSERT INTO `users` VALUES (?,?,?,?,?,?,?)");
$stmt->bind_param("sssssss", $firstname, $lastname, $email, $subscribed, $signup_date, $unsubscribe_date, $signup_source);
$stmt->execute();
$stmt->close();
$mysqli->close();

変数の種類は次のとおりです。

$firstname = string
$lastname = string
$email = string
$subscribed = char (Y or N)
$signup_date = DATE - date('Y-m-d')
$unsubscribe_date = DATE - 0000-00-00 Entered Initially
$signup_source = string

通常の容疑者をすべて見つけようとし、接続を確認しました。基本的に、別の SELECT ステートメントを作成しましたが、機能します。「USERS」は有効なテーブルです。接続の権限は root であるため、それは問題ではありません。「s」と「d」の間で日付の型を切り替え、ダミー変数を使用してすべてを試しましたが、違いはありません。

私はそれが単純なものであることを願っています - 私は過去1時間頭を悩ませてきました.

4

2 に答える 2

4

これは通常、->prepare()呼び出しが失敗し、ステートメント オブジェクトではなくブール値の FALSE が返されたことを意味します。それを確認してください:

$stmt = $mysqli->prepare("INSERT INTO `users` VALUES (?,?,?,?,?,?,?)") or die($mysqli::error);
于 2012-09-04T16:16:58.327 に答える
1

あなたの質問に答えて、次のことができます。

 INSERT INTO tableName (column1, column2, column3,...) 
 VALUES (value1, value2, value3,...)
于 2012-09-04T16:23:19.973 に答える