我正在尝试将我的php脚本转换为使用预处理语句,并且它给了我一个错误....任何人都知道什么是错的?
<?php
define("DB_DSN","xxx");
define("DB_HOST","xxx");
define("DB_USER","xxx");
define("DB_PASS","xxx");
$con = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('Could not connect: ' . mysql_error());
mysql_select_db(DB_DSN) or die('Could not select database');
$stmt = $con->prepare("UPDATE Level01 SET Deaths=:Deaths WHERE DeathID= :DeathID");
$stmt->bindParam(':Deaths', $deaths);
$stmt->bindParam(':DeathID', $id);
$id = base64_decode($_GET["id"]);
$deaths = base64_decode($_GET["deaths"]);
$uresult = $stmt->execute();
if(! $uresult )
{
die('Could not update data: ' . mysql_error());
}
echo "Updated data successfully\n";
mysql_close($con);
exit;
这是我的错误:致命错误:在非对象上调用成员函数prepare()
答案 0 :(得分:4)
mysql_connect
不返回MySQLi对象,而是返回MySQL资源。
你似乎在混合使用MySQL和MySQLi。由于MySQL不支持预处理语句,因此它们不是替代品的替代品。再次阅读manual,这里有很清楚的解释。
答案 1 :(得分:0)
首先绑定变量然后分配它们。另辟蹊径:
$id = base64_decode($_GET["id"]);
$deaths = base64_decode($_GET["deaths"]);
$stmt->bindParam(':Deaths', $deaths);
$stmt->bindParam(':DeathID', $id);
如果不是这样,请添加您收到的错误消息
答案 2 :(得分:0)
你不能使用mysql准备好的语句,使用mysqli或PDO。