0

我正在尝试将我的 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()

4

3 回答 3

4

mysql_connect不返回 MySQLi 对象,而是返回 MySQL 资源。

您似乎在混合 MySQL 和 MySQLi。它们不是相互替代的,因为 MySQL 不支持准备好的语句。再读一遍说明书,里面解释的很清楚。

于 2013-09-30T11:56:51.793 回答
0

您首先绑定变量,然后分配它们。换个方式试试:

$id = base64_decode($_GET["id"]);
$deaths = base64_decode($_GET["deaths"]); 

$stmt->bindParam(':Deaths', $deaths);
$stmt->bindParam(':DeathID', $id);

如果不是这样,请添加您收到的错误消息

于 2013-09-30T11:57:50.647 回答
0

你不能在 mysql 中使用准备好的语句,使用 mysqli 或 PDO。

于 2013-09-30T11:58:12.700 回答