我正在使用foreach循环数组并更新MySQL数据库。 这是我的代码
foreach($result['getHiscore'] as $highScoreType => $highScoreValues){
$rank = $highScoreValues['rank'];
$lvl = $highScoreValues['lvl'];
$totalXp = $highScoreValues['totalxp'];
mysqli_query($con,"UPDATE Users SET Level("$highScoreType") = $lvl, Xp("$highScoreType") = $totalXp,
WHERE UserID= '1'");
}
我正在尝试将“level”这个词与$ highScoreType的内容混为一谈,我的数据库中的列标题是Leveloverall,Xpoverall,Levelattack,Xpattack等等所以我打算保持Level / Xp标题不变只是改变了关键。
这对我来说很好看,当我用预先设定的值测试sql时它更新很好,但是使用变量根本不会更新。我知道变量正确地从数组中出来,就像我用它们以正确的格式和顺序打印出来的内联回声一样。
这是我的格式问题还是我错过了其他的东西?
答案 0 :(得分:0)
如果您回显生成的SQL查询,该查询应该可以帮助您查看查询中的任何问题。
我看起来很奇怪:UPDATE Users SET Level("$highScoreType") = $lvl
不应该只是UPDATE Users SET $highScoreType = $lvl
吗?
还要注意这种代码对于SQL注入攻击是脆弱的,因此请始终警惕这些变量中的内容。
要打印查询,请执行以下操作:
$query = "UPDATE Users SET Level("$highScoreType") = $lvl, Xp("$highScoreType") = $totalXp, WHERE UserID= '1'"
echo $query
mysqli_query($con, $query)