2016-06-08 109 views
0

我有一個簡單的表單,它是一個textarea,我需要將我的textarea中的每行插入到MySQL中的不同行中。MySQL從textarea插入到多行

HTML代碼:

<html> 
<form method="POST" action="insert.php"> 
<textarea name="url" rows="10" ></textarea> 
<input type="submit" name="submit" value="Enter"> 
</form> 
</html> 

PHP代碼:

<?php 
$link = mysql_connect('localhost', 'root', ''); 
if (!$link) { 
     die('Not connected : ' . mysql_error()); 
} 
$db_selected = mysql_select_db('insert', $link); 
if (!$db_selected) { 
    die ('Can\'t use this database : ' . mysql_error()); 
} 
$textarea = mysql_real_escape_string($_POST['url']); 
$array = explode("\n", $textarea); 
$i=0; 
$value = trim($array[$i]); 
if (!empty($value)) { 
    foreach ($array as $value) { 
      mysql_query("INSERT INTO test (text) VALUES ('{$array[$i]}')") or  die(mysql_error()); 
      $i++; 
    } 
} 
mysql_close($link); 
?> 

目前我儲存的textarea在一排,當我提交表單。你能幫我解決這個問題嗎?

+0

這個會發生什麼?我會擺脫'{$ array [$ i]}'和所有'$ i'引用,只需使用'$ value'。我也會使用參數化查詢和更新的驅動程序(PDO或mysqli)。 – chris85

+0

你在'var_dump($ array)'中看到了什麼? – Barmar

+0

如果其他人的stackoverflow發現你沒有使用PDO,你會聽說它。 – bassxzero

回答

3

試試這個:

$text = trim($_POST['textareaname']); 
$textAr = explode("\n", $text); 
$textAr = array_filter($textAr, 'trim'); // remove any extra \r chars 

foreach ($textAr as $line) { 
    // Your sql Query here with $line as the string. 
} 
+0

這就是我想要的,非常感謝 –

2

這應該工作:

$textarea = mysql_real_escape_string($_POST['url']); 
$array = explode("\n", $textarea); 
foreach ($array as $value) { 
    mysql_query("INSERT INTO test (text) VALUES ('".$value."')") or die(mysql_error()); 
}