我正在尝试使用从爆炸数组中提取的值来更新数据库中的记录
$arr2 = explode(",",$_POST['hidden-tags']);
//echo $arr2[0];
//insert new rows into blog post
mysql_select_db($db, $db);
$insertq = mysql_query("UPDATE blog SET tags1 = $arr2[0],tags2 = $arr2[1],tags3 = $arr2[2], tags4 = $arr2[3], tags5 = $arr2[4] WHERE idblog = '$id' ",$dbconnet);
如果我一次一个地回应我的数组中的值,那么效果很好。一旦我尝试将它们放入数据库中,该行就会变空。更多用户可能没有输入5个项目,他们可能只输入1但我不认为这确实是问题。说实话,我不明白为什么它目前都失败了。
我知道我可以将所有值保存在一个字段中,但是当我稍后撤回并稍后查询时,它将更容易作为单独的字段。
答案 0 :(得分:1)
$insertq = mysql_query("UPDATE blog SET tags1 = $arr2[0],tags2 = $arr2[1],tags3 = $arr2[2], tags4 = $arr2[3], tags5 = $arr2[4] WHERE idblog = '$id' ",$dbconnet);
应该是:
$insertq = mysql_query("UPDATE blog SET tags1 = '".$arr2[0]."',tags2 = '".$arr2[1]."',tags3 = '".$arr2[2]."', tags4 = '".$arr2[3]."', tags5 = '".$arr2[4]."' WHERE idblog = '".$id."' ,$dbconnet);
或整个查询将把变量名称视为字符串
的一部分编辑:我把报价翻了。
答案 1 :(得分:1)
如果列的数据类型是字符串,则值必须用单引号换行,因为它们是字符串文字。例如,
$insertq = mysql_query("UPDATE blog SET tags1 = '". $arr2[0] . "',....");
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 2 :(得分:1)
应该是这样的:
$insertq = mysql_query("UPDATE blog SET tags1 = "'.$arr2[0].'",tags2 = "'.$arr2[1].'",tags3 = "'.$arr2[2].'", tags4 = "'.$arr2[3].'", tags5 = "'.$arr2[4].'" WHERE idblog = "'.$id.'" ",$dbconnet);
答案 3 :(得分:1)
我认为您可能需要查看表的数据类型。如果您使用varchar或text作为数据类型,那么将需要单冒号。
$insertq = mysql_query("UPDATE blog SET tags1 =' $arr2[0]',tags2 = '$arr2[1]',tags3 = '$arr2[2]', tags4 = '$arr2[3]', tags5 = '$arr2[4]' WHERE idblog = '$id' ",$dbconnet);
此外,如果 idblog 是整数,那么不要使用单引号。
希望这会有所帮助