我必须使用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(?)
更改为password = ?
,然后就可以了。密码不匹配,但我不再收到错误。我将来不打算使用md5,但我想暂时使用它,我需要将字符集设置为utf8。我该如何解决?
答案 0 :(得分: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,我们需要更多信息,例如您的实际代码。
答案 1 :(得分:0)
以下代码应该没问题:
PHP
$stmt = $mysqli->prepare("SELECT * FROM profiles WHERE email = ? AND password = md5(?) LIMIT 1");
$stmt -> bind_param("ss", $email, $pass);
$stmt -> execute();