PHP MySQL多次插入

时间:2013-05-24 16:14:56

标签: php html forms

我不太确定我哪里出错:(

if(isset($_POST['finish'])){
$objectives=addslashes(strip_tags($_POST['item']));

    foreach ($objectives AS $objective) {
        echo "$objective <br />";
    }

}

它没有显示任何东西......我错过了什么?我正试图从多个输入条目中获取数据..

<input class="item" id="objectives" name="item[]" />

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

如果您有多个<input class="item" id="objectives" name="item[]" />,那么$_POST['item']将是一个数组,而不是一个字符串。因此,您必须迭代它或应用array_map函数。

$items = array_map('strip_tags',$items);
$items = array_map('addslashes',$items);

您的代码将是

if(isset($_POST['finish'])){
    $_POST['item'] = array_map('strip_tags',$_POST['item']);
    $_POST['item'] = array_map('addslashes',$_POST['item']);

    foreach ($_POST['item'] AS $objective) {
        echo "$objective <br />";
    }

}

答案 1 :(得分:0)

直接的答案是任何带括号([])的标签都作为数组放入超全局数组中。您将需要循环使用此数组或使用array_map在此数组上执行函数。

我的扩展答案是,如果您使用的是PHP 5.2或更高版本,则可以使用filter_var_array执行此操作,而无需在php中迭代您的数组。以及进行类型检查。 filter_var和filter_var_array有很多过滤选项供我使用。请参阅文档http://php.net/manual/en/function.filter-var-array.php

if(isset($_POST['finish'])) {
    $objectives = filter_var_array($_POST['item'], FILTER_SANITIZE_STRING);

foreach ($objectives AS $objective) {
    echo "$objective <br />";
}

}