2011-01-28 50 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...