拆分多行并将它们输入数据库中的单独行

时间:2010-10-21 19:07:05

标签: php mysql insert rows

我正在尝试创建一个php脚本,将输入粘贴到textarea中的HTTP链接输入到数据库中的单独行中。更确切地说:

第一页是textarea (name=textarea-linkfield)所在的位置,链接将在此处粘贴

http://www.stackoverflow.com
http://www.yahoo.com
....
http://google.com

使用$linkfield=$_POST['textarea-linkfield'];将链接转移到php脚本中,我希望将链接插入数据库,每行每个http链接。数据库名称:site,table name plow,columns:id,url,...

L.E。我试着作为概念的证明:

$linkfield=$_POST['textarea-linkfield'];
$strip=explode("\n",$linkfield);
echo $strip[1];

但我得到500内部服务器错误

L.E.2

答案:

// Split the string into pieces
$pieces = explode("\n", str_replace(array("\n", "\r\n"), "\n", trim($linkfield)));

// Build the top of the INSERT query
$sql = "INSERT INTO `plow`(`url`) VALUES\n";

// Build the rest of the ;INSERT query by re-assembling the
// pieces.
$sql .= "('";
$sql .= implode("'), ('", $pieces);
$sql .= "')"; 
mysql_query($sql) or die ('Error: ' . mysql_error());

mysql_close();

感谢所有人的帮助。 克里斯。

3 个答案:

答案 0 :(得分:1)

根据您的操作系统,换行符可以是“\ n”,“\ r \ n”或“\ r \ n”。

试一试:

$strip=explode("<br>", nl2br($linkfield));

或者更安全:

$strip=explode("\n", str_replace(array("\n", "\r\n"), "\n", $linkfield));

答案 1 :(得分:0)

使用preg_match查找每个URL并将其添加到数据库中。 此页面上的示例3应该可以解决问题:http://php.net/manual/en/function.preg-match.php 这样您就可以输入URL而无需使用新行。 如果您只使用网址,那么您还可以在每个网址后添加一个分隔符,即逗号(在网址中不使用),以便在评论中使用explode()创意来展开它们。

答案 2 :(得分:0)