0

我已经阅读 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 行。

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

4

2 回答 2

2

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

于 2011-09-13T09:28:11.060 回答
2

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

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

于 2011-09-13T09:29:27.637 回答