-1

好的,我正在尝试使用以下代码来更新游戏服务器数据库的一些值。

$db1 = "versound_store";

//connection to the database

$mysqli = new mysqli($hostname, $sqluser, $sqlpass, $db1);


   if( $stmt = $mysqli->prepare("UPDATE vxp_users SET tokens =?, xp =?, level =? WHERE steamid ='?'"))
   {
   $stmt->bind_param('isss', $tokens, $xp, $level, $steamid00);
   $stmt->execute();
   $stmt->close() or trigger_error($db->error);
   }
   else {
   printf("Prep statment failed: %s\n", $mysqli->error);
   }
$mysqli->close();
$db2 = "versound_stats";
$mysqli = new mysqli($hostname, $sqluser, $sqlpass, $db2);
   if($stmt = $mysqli->prepare("UPDATE ttt_stats SET roundsplayed =?, playtime =? WHERE steamid ='?'"))
   {
   $stmt->bind_param('iis', $roundsplayed, $totalplaytime, $steamid00);
   $stmt->execute();
   $stmt->close() or trigger_error($db->error);
   }
   else {
   printf("Prep statment failed: %s\n", $mysqli->error);
   }
$mysqli->close();

但是,当然,对于这两个查询,我都得到Number of variables doesn't match number of parameters in prepared statement on line 64.

$tokens 是一个通常在 -50 到 10000 之间的数字。

$xp 是一个通常介于 -100 和 269000 之间的数字。

$level 是一个通常在 1 到 50 之间的数字。

$roundsplayed 是一个大于 0 的数字。

$totalplaytime 是一个通常在 1 到 1000000 之间的数字。

$steamid00 是一个格式为 STEAM_0:1:23456789 的字符串。

我究竟做错了什么?

4

1 回答 1

0

罪魁祸首

WHERE steamid ='?'"

不要使用引号

WHERE steamid =?"
于 2013-07-12T03:49:05.670 回答