将带有数组项的行更新到数据库php中

时间:2013-02-06 11:13:25

标签: php sql arrays

我正在尝试使用从爆炸数组中提取的值来更新数据库中的记录

    $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但我不认为这确实是问题。说实话,我不明白为什么它目前都失败了。

我知道我可以将所有值保存在一个字段中,但是当我稍后撤回并稍后查询时,它将更容易作为单独的字段。

4 个答案:

答案 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 是整数,那么不要使用单引号。

希望这会有所帮助