如何在我的MySQL数据库中为文本区域表单中的每个换行提交单独的行?

时间:2015-04-05 21:06:22

标签: php html mysql

我试图创建一个文本区域表单,如果有人可以输入多个由换行符分隔的链接,并且每个链接都会进入我数据库中链接表下的自己的行。我似乎无法弄明白。我到处都是。

的index.html

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="style.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    </head>
    <body>
        <form action="insert.php" method="post">
            <textarea action="results.php" id="textarea" name="url" class="boxsizingBorder">
            </textarea>
            <br />
            <textarea id="results" name="conversion" class="boxsizingBorder"></textarea><br />
            <input type="submit" value="Add Records" id="convert" onclick="getTrackData()">
            <span id="counter"></span>
        </form>
        <script src="script.js"></script>
    </body>
</html>

insert.php

<?php
    session_start();

    include('db.php');

    $query = mysql_query("SELECT * FROM persons");

    // Escape user inputs for security

    $url = $_POST['url'];
    $array = preg_split('/[\n\r]+/', $url);

    // attempt insert query execution
    $sql = "INSERT INTO persons (url) VALUES ('$url')";
    if(mysqli_query($link, $sql)) {
        echo "Records added successfully.";
    } else{
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }

    // close connection
    mysqli_close($link);
?>

这就是它的外观: http://i.imgur.com/dsxtx6F.png

这就是我想要的样子: http://i.imgur.com/CzwHj5i.png

编辑:我对mysql API进行了更改,但似乎无法弄清楚如何将每个链接放在自己的行中。

修改

<?php
    include('db.php');


    // Escape user inputs for security

    $url = $_POST['url'];
    $array = explode('\n', $url);

    // attempt insert query execution
    foreach($array as $url) {
        mysqli_query($con, "INSERT INTO persons (url) VALUES ('$url')");
        // close connection
        mysqli_close($con);
    }
?>

1 个答案:

答案 0 :(得分:1)

您可以在新行上使用explode(),而不是使用preg_split。

$array = explode('\n', $url);

然后你可以使用foreach来执行插入。

foreach($array as $url)
{
    $sql = "INSERT INTO persons (url) VALUES ('$url')";
    if(mysqli_query($link, $sql)) {
        echo "Records added successfully.";
    } else{
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
}

但请记住,这也取决于你如何观察新线。有WYSIWYG编辑器将​​新行转换为<br/>标签。确保你测试以确保不是你的情况。

修改

弗雷德提出了一个很好的观点。你不能混合mysql API,你需要选择一个。由于不推荐使用mysql_库,因此最好使用mysqli_库。

您需要将连接器功能更改为mysqli_connect()而不是mysql_connect(),并从那里进行适当的更改。