好的,所以我正在尝试使用以下代码更新游戏服务器数据库的某些值。
$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。
我做错了什么?
答案 0 :(得分:0)
罪魁祸首
WHERE steamid ='?'"
不要使用引号
WHERE steamid =?"