2011-09-06 19 views
0

我堅持,我想從像下面數組字段表格數據插入到MySQL:如何插入表單數組值到MySQL?

<input type='text' name='name[]' />` and `<input type='text' name='url[]' /> 

我知道如何輸出爲一個字段中的數據,如本例中

foreach($_POST['name'] as $name) 
{ 
    echo $name; 
} 

但在我的表格我有<input type='text' name='name[]' /><input type='text' name='url[]' />我怎樣才能讓這個工作正常?

+0

foreach($ _ POST ['url'] as $ url){ echo $ url; } – Bruce

+0

請包括您的表格模式 – ajreal

回答

5

我會盡量避免一遍遍查詢數據庫,只是把一切都在一個大的INSERT語句:

$query = "INSERT INTO table1 (name, url) VALUES "; 
foreach($_POST['name'] as $i => $name) 
{ 
    // Get values from post. 
    $name = mysql_real_escape_string($name); 
    $url = mysql_real_escape_string($_POST['url'][$i]); 

    // Add to database 
    $query = $query." ('$name','$url') ,"; 
} 
$query = substr($query,0,-1); //remove last char 
$result = mysql_query($query); 

這樣,你只需要一次訪問數據庫,使插入更快。
另一個好處是,如果引擎支持交易(InnoDB等)所有插入發生在單個事務中。

-3

如果要將所有值存儲在單個DB字段中,則需要對陣列進行爆破。

$all_names= implode(",", $name[]); 

這會將所有的數組值都放到一個逗號分隔的變量中。

+0

-1,由於很多原因,將CSV值存儲在數據庫中是一個非常糟糕的主意。 – Johan

+0

你能指點一些閱讀材料的正確方向嗎?我經常看到這樣做,我想知道爲什麼它不好,以及像複選框數組一樣存儲值的更好方法。 –

3

你可以用你的循環索引像這樣:

foreach($_POST['name'] as $i => $name) 
{ 
    // Get values from post. 
    $name = mysql_real_escape_string($name); 
    $url = mysql_real_escape_string($_POST['url'][$i]); 

    // Add to database 
    $sql = "INSERT INTO `table` (`name`, `url`) VALUES ('".$name."', '".$url."')"; 
    $result = mysql_query($sql); 
} 

當然,這是在您的查詢中添加他們之前使用的值mysql_real_escape_string一個很好的做法。

+1

+1,我認爲這個帖子不值得0分。 – Johan