如何在php中存储用逗号分隔的数据

时间:2017-10-30 11:42:26

标签: javascript php html database

HTML代码

<!DOCTYPE html>
<html>
    <head>  
        <meta charset="utf-8"> 
        <title>dynamic</title>
    </head> 
    <body>
        <form action="">  
            <div id="items">
                <input type="text" name="username">
            </div>
            <input type="button" value="add entry" id="add">
            <input type="submit" value="submit"> 
        </form> 
        <script src="js/jquery-3.2.1.min.js"></script>
        <script src="js/custom.js"></script>
    </body>
</html>

JavaScript代码

$(document).ready(function(){

    $("#add").click(function (e){
event.preventDefault()
        $('#items').append('<div><input type="text" name="username">'
            +'<input type="button" value="delete" id="delete"/></div>');
    });

    $('body').on('click','#delete',function (e){
        $(this).parent('div').remove();

    });
});

数据库连接

<?php
$local = "localhost";
$username = "root";
$password = "";
$dbname = "test";
$conn = mysql_connect($local, $username, $password);
$db= mysql_select_db( $dbname,$conn);

$n=$_POST["username"];              

$in = "INSERT INTO table(header1) VALUES ('$n') ";
if(mysql_query($in)===TRUE)
{
  echo " <h1>successfully Inserted</h1> <br>"; 


}
else {
    echo "Error: " . $in . "<br>" . $conn->error;
}
?>

DB name = test

表名=表

我需要用逗号存储值每个值都需要用逗号分隔, 在上面的代码我创建了动态文本框,因此有很多文本框。 屏幕截图如下所示:

2 个答案:

答案 0 :(得分:2)

正如其他人已经指出的那样,不要在数据库中存储逗号分隔列表,而是将它们标准化或使用序列化的blob字段(不太好,但更好)。

也不应该使用mysql_ *函数,因为它们已在PHP5.6(?)中弃用,并在PHP7中完全删除。请改用mysqli_ *或PDO。 此外,您的代码容易受到SQL注入攻击,因为您将发布的数据直接存储到数据库中。

看看我的一个较旧的答案,这是一个相同的主题(有点):Link

答案 1 :(得分:0)

要在发布的数据中获取一组用户,您应首先将输入更改为:

<input type="text" name="username[]">

然后在您的PHP代码中,使用implode function以逗号分隔所有用户加入:

$n = implode(",", $_POST["username"]);
$in = "INSERT INTO table(header1) VALUES ('$n') ";
...

注意用户输入,您应该在插入之前验证它们,不要相信用户输入