将PHP中textarea的数据插入MySQL数据库(也跳过重复)

时间:2017-12-04 22:04:30

标签: php mysql

我正在尝试从textarea表单中批量插入PHP中的一些数据,然后防止已有数据的重复。我试图编写一些东西但是现在它只是将我在textarea中插入的所有内容插入到列中相同的“值”中。但是我希望textarea中的每一行都在每个列中分开。

这是我到目前为止所做的,这可行,但它会插入整行:

<?php
include '../includes/config.php';
if (isset($_POST["data"])) {

    $_POST["ban"] = $value;
    $line_data = explode("\n", $_POST["data"]);
    foreach ($line_data as $key => $value) {
        $checkQuery  = "SELECT ip FROM blacklist WHERE ip='" . $_POST["ip"] . "'";
        $checkResult = mysqli_query($con, $checkQuery);
        if (mysqli_num_rows($checkResult) != 0){
            // do nothing 
        } else {
            $sql = "INSERT IGNORE INTO blacklist (ip) VALUES ('{$value}')";
            $result = mysqli_query($con, $sql);
        }
    }
}
?>

<form action="bulk.php" method="post"> 
<textarea type="text" name="data" placeholder="IP address"></textarea><br/>
<button type="submit" name="ban">Ban</button>
</form>

所以我的问题是,我做错了什么,有没有好办法处理这个问题?如果是这样,怎么样?

编辑:它现在插入了自己的列,但它仍然重复。就像数据库中存在数据一样,它仍然可以多次插入相同的东西。

1 个答案:

答案 0 :(得分:0)

您可以将explode用于将字段ip中的值拆分为行。使用ip地址将每一行保存为db表blacklist

中的单独记录