2011-01-28 95 views
0

这是我的代码 - 我试图附加一堆user_id的一段内容。PHP的Mysql多重插入与foreach不起作用

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()); 
} 

很想任何帮助,您可以给 - 它不工作...

+0

你有什么错误?我想你在发言结束时还有一个额外的“,”。 – pascal 2011-01-28 04:12:31

+0

请定义“它不工作” – DeveloperChris 2011-01-28 04:13:00

+0

他得到的错误消息是“mysqli_query()期望至少有2个参数,1给出”在最后一行...... – WillHerndon 2011-01-28 04:13:57

回答

1

而且最近怎么不工作?语法错误?沉默地吐痰?你不会转义你的POST数据,所以如果其中的任何一个至少包含一个单引号,那会导致语法错误,还会让你对sql注入攻击敞开大门。

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

0

好吧,我看到几个问题:

  1. 您未使用的参数或逃逸,自己开了广阔的SQL注入攻击。见mysqli_real_escape_string

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

  3. 除非learner_id是一个常数,那么这是一个语法错误。如果它是数组键,请将其放在引号中。

  4. $postId$id哪里来的?

0

的第一个参数mysqli_querymysqli_connect返回的标识,而你只是直接给它的查询。

它应该是这样的,

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