-1

開発に XAMPP を使用するマシンが必要です。ファイルをあるマシンから別のマシンに移動したところ、mysqli_set_charset を呼び出してから bind_param を呼び出すとエラーが発生しました。1 台のマシンで動作します。

編集:これは私が得るエラーです:

PHP 致命的なエラー: 非オブジェクトでメンバー関数 bind_param() を呼び出します

私のコード:

$mysqli = new mysqli("localhost", "root", "123", "myDatabase");
mysqli_set_charset($mysqli, "utf8");

//Checks if the user exists
$stmt = $mysqli->prepare("SELECT * FROM profiles WHERE email = ? AND password = md5(?) LIMIT 1");
$stmt -> mysqli_stmt_bind_param("ss", $email, $pass);
$stmt -> execute();

編集#2:

それが動作するマシンは、Mac OS 10.8.1 の XAMPP で PHP 5.3.1 を使用します。XAMPP の新しいバージョンはまだありません。

動作しないマシンは、Windows 7 の XAMPP で PHP 5.4.4 を使用しています。

両方のマシンで動作するという行を削除するとmysqli_set_charset($mysqli, "utf8");、それ以外の場合は Mac でのみ動作します。

編集#3:

password = md5(?)justに変更することをテストしたところpassword = ?、動作しました。パスワードが一致しませんが、エラーは発生しなくなりました。今後 md5 を使用する予定はありませんが、とりあえず使用したいので、文字セットを utf8 に設定する必要があります。どうすれば解決できますか?

4

2 に答える 2

0

次のコードは問題ありません。

PHP
$stmt = $mysqli->prepare("SELECT * FROM profiles WHERE email = ? AND password = md5(?) LIMIT 1");
$stmt -> bind_param("ss", $email, $pass);
$stmt -> execute();
于 2012-09-01T00:49:00.867 に答える
0

他のマシンが PHP 5.4 を実行している場合:

This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.

( http://www.php.net/manual/en/function.mysqli-bind-param.phpから) bind_param は mysqli_stmt_bind_param のエイリアスでした - それを使用する必要があります

PHP 5.4 でない場合は、実際のコードなどの詳細情報が必要です。

于 2012-08-31T12:20:17.610 に答える