PHP Mysql多次插入,foreach无法正常工作

时间:2011-01-28 04:07:18

标签: php mysql

这是我的代码 - 我试图将一堆user_id附加到一段内容中。

if (empty($errors)) // If everything's OK.
{ 
    foreach($_POST['userId'] as $row)
    {
        $query = " ('".$row[learner_id]."', '".$postId."', '".$id."' ),";
    }

    $query = substr_replace($query,"",-1);
    $mysql_return = mysqli_query("INSERT INTO subs (userId, postId, account_id ) VALUES ".$query) or die(mysql_error());
}

会喜欢你能给予的任何帮助 - 它不起作用......

3 个答案:

答案 0 :(得分:1)

它是如何起作用的?语法错误?默默地呕吐?你没有转发你的POST数据,所以如果其中任何一个包含至少一个单引号,那么就会在那里引起语法错误,并且让你对sql注入攻击敞开大门。

或许外键检查失败......很多可能性,但你没有给我们足够的信息来告诉我们。你得到了什么错误信息?

答案 1 :(得分:0)

好的,我看到了几个问题:

  1. 您没有使用参数或转义,让自己打开了sql注入攻击。请参阅mysqli_real_escape_string

  2. 你有什么可能发送到$ _POST ['userId']这会使自己成为一个数组?

  3. 除非learner_id是常量,否则这是语法错误。如果是数组键,请将其放在引号中。

  4. $postId$id来自哪里?

答案 2 :(得分:0)

mysqli_query的第一个参数是mysqli_connect返回的标识符,而您只是直接给它查询。

应该是这样的,

$link = mysqli_connect("host", "user", "pass", "db");
$mysql_return = mysqli_query($link, "INSERT INTO subs (userId, postId, ac...