变量数与参数数量不匹配 - MySQLi

时间:2013-07-12 03:40:18

标签: mysqli prepared-statement

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

$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。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

罪魁祸首

WHERE steamid ='?'"

不要使用引号

WHERE steamid =?"