首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP预准备语句非对象错误

问PHP预准备语句非对象错误
EN

Stack Overflow用户
提问于 2013-09-30 19:53:52
回答 3查看 166关注 0票数 0

我试图将我的php脚本转换为使用准备好的语句,它给了我一个error....anyone,知道出了什么问题吗?

代码语言:javascript
复制
<?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()

EN

回答 3

Stack Overflow用户

发布于 2013-09-30 19:56:52

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

你似乎把MySQL和MySQLi混在一起了。因为MySQL不支持预准备语句,所以它们并不是彼此的临时替代品。再读一遍manual,这里已经很清楚地解释了。

票数 4
EN

Stack Overflow用户

发布于 2013-09-30 19:57:51

你首先绑定你的变量,然后赋值它们。换一种方式试试:

代码语言:javascript
复制
$id = base64_decode($_GET["id"]);
$deaths = base64_decode($_GET["deaths"]); 

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

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

票数 0
EN

Stack Overflow用户

发布于 2013-09-30 19:58:13

您不能在mysql中使用预准备语句,请使用mysqli或PDO。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19093564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档