将多行插入数据库

时间:2014-12-14 11:43:07

标签: php database insert line

我需要从文本区域插入多行插入到数据库的每一行。但现在是插入一行中的所有行我怎么能这样做?我也想要echo完成的行,如果行退出并带有警告

则回显

我的文字区域输入是:

line1
line2
line3
line4
line5

我想要像这样插入

id  url
1   line1
2   line2
3   line3
4   line4
5   line5

这是我的insert.php

<html><body>
    <h1>indian mp3 Database: indianmp3</h1>

    <form action="post.php" method="post">
        Firstname:<textarea name="url" id="term" cols="40" rows="10"></textarea><br><br>
        Category: <select name="cat_id">
            <option value="1">cat1</option>
            <option value="2">cat2</option>
            <option value="3">cat3</option>
        </select>

        <input type="submit"/>
    </form>
</body></html>

这是我的post.php

<html><body>
<?php
$host="localhost";
$user=" ";
$pass=" ";
$database=" ";
$con=mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_set_charset('UTF8', $con);
if(!$con) {
    die('Could not connect: '.mysql_error());
}

if(isset($_POST['cat_id'])) {
    $cat_it=(int)$_POST['cat_id'];
    $url=$_POST[url];
    mysql_select_db($database, $con) or die("Could not find database.");
    $sql="INSERT INTO link (url, cat_id) VALUES ('$url' , '$cat_it')";
}
if(!mysql_query($sql, $con)) {
    die('Error: '.mysql_error());
}
echo "inserted all line";
mysql_close($con)
?>
</body></html>

1 个答案:

答案 0 :(得分:0)

这里的问题是你使用整个url data进行单个插入。

1)首先从文本区域中识别每个网址值,然后使用'.'specific keyword进行展开,制作一个数组。

2)循环遍历url数组的大小以插入表中。

在mysql对象上插入检查错误时出错,否则继续插入直到所有插入完成。

假设您$url= $_POST[url];中的所有网址都与'\n'分开:

$urlArr = explode("\n",$url);

for($i=0;$i< sizeof($urlArr);i++){
$sql="INSERT INTO link (url, cat_id) VALUES ('$url[i]' , '$cat_it')";
if (!mysql_query($sql,$con))
                  {
                  die('Error: ' . mysql_error());
                  }


}

请开始使用PDO or mysqli.