$ _post在循环中

时间:2016-01-18 16:34:10

标签: php html

我有5个文本框,名称为textbox1,textbox2 ... textbox5。现在我想要的是,而不是将它们的每个值单独放在一个变量中我想在一个循环中完成它,我在这里有我的代码,但在我输入提交错误之后如

  

数组转换为字符串...

  

未定义索引:textboxArray in ...

。请查看我的代码有什么问题。

if(isset($_POST['submit'])){
    for($i=0; $i<5; $i++){
        $sasa = $_POST["textbox".[$i].""];  
        $sql="INSERT into sasa (sasa) values('$sasa')";
        $q=$conn->query($sql);
    }   
}

2 个答案:

答案 0 :(得分:1)

问题在于这一行:$sasa = $_POST["textbox".[$i].""];

你应该按如下方式进行:

if(isset($_POST['submit'])){

    if(is_array($_POST["textbox"])){
        foreach($_POST["textbox"] as $sasa){
            //This is unsafe, use prepared statements instead
            $sql="INSERT into sasa (sasa) values('$sasa')";
            $q=$conn->query($sql);
        }
    }

}

这允许您编写如下表单:

<form method="post" ... >

    <input type="text" name="textbox[]"/>
    <input type="text" name="textbox[]"/>
    <input type="text" name="textbox[]"/>

    <button type="submit">Submit</button>

</form>

在回答你的评论时,你可以使用jQuery来添加/删除输入:

var control = $('<div class="controls"></div>');
control.append("<input class='form-control' type='text' name='textbox[]' placeholder='textbox'/><a href='#' class='remove_this btn btn-danger'>remove</a>");
control.appendTo('form');

control.find('.remove_this').click(function(){
    control.remove();
});

答案 1 :(得分:1)

这是不正确的:

    $sasa = $_POST["textbox".[$i].""];  
                             ^^^^

[$i]定义了一个包含单个整数的新数组,然后将其连接成一个字符串。字符串上下文中使用的数组只是字面上的Array,这意味着您可以有效地运行它:

    $sasa = $_POST["textboxArray"];  

在您的表单中不存在。

你想要

    $sasa = $_POST["textbox{$i}"];  

代替。请注意{}

请注意,您的代码容易受到sql injection attacks的攻击。<​​/ p>