我的代码出了什么问题 - 在php中准备更新

时间:2011-09-13 09:26:07

标签: php mysqli prepare

我已阅读PHP手册超过一个小时,并尝试谷歌答案但无济于事(

$stmt = $mysqli->prepare("UPDATE players SET energy=:energy, confidence=:confidence, morale=:morale WHERE playerID=:playerID ");
$stmt->bindParam(':energy', $energy);
$stmt->bindParam(':confidence', $confidence);
$stmt->bindParam(':morale', $morale);
$stmt->bindParam(':playerID', $playerID);

$playerID=1;
$energy = 1000;
$confidence = 1100;
$morale = 1200;

$stmt->execute();

但是当我尝试运行它时,我收到以下错误

Fatal error: Call to a member function prepare() on a non-object in /home/www/websites/www.cricket.cliftonbazaar.com/gm/rungame/rungame.php on line 136

请注意,第136行是PREPARE行。

编辑:所有变量和表名都是正确的,它们已被三重检查。

2 个答案:

答案 0 :(得分:2)

$ mysqli不是一个对象。答案是在错误中。

答案 1 :(得分:2)

问题出在您发布的代码之前。如果你var_dump($mysqli);你会发现它不是你想象的那样(我的猜测是FALSE)。如果您在创建mysqli对象的位置发布代码,我们可以帮助您准确找出问题所在。

此外,您在使用后似乎正在分配值($playerID等),您需要将这4行移到$stmt->bindParam()次调用之上。虽然它可能有用,但您所做的并不严格正确,可能会导致未定义的变量错误。