-1

我必须使用我使用 XAMPP 进行开发的机器。我只是将文件从一台机器移动到另一台机器,现在在调用 mysqli_set_charset 和 bind_param 时出现错误。它在一台机器上工作。

编辑:这是我得到的错误:

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,但我现在只想使用它,我需要将 charset 设置为 utf8。我该如何解决?

4

2 回答 2

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 回答
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 回答