Foreach $ _POST结果来自表单,返回单词“Array”

时间:2012-11-03 10:40:49

标签: php mysql forms input foreach

语言: PHP / MySQL

我在页面上有一个表单,隐藏输入。我将这些输入中的数据转发到另一个页面,然后将它们插入到我的数据库中。

表单内的输入是:

  • copied_filename []
  • copied_url []
  • copied_userid []

这些设置为数组,因为有时候用户会附加多个文件

<input type="hidden" id="copied_filename" name="copied_filename[]" value="<?php echo $img->filename; ?>" />
<input type="hidden" id="copied_url" name="copied_url[]" value="<?php echo $img->url; ?>" />
<input type="hidden" id="copied_userid" name="copied_userid[]" value="<?php echo $current_user->id; ?>" />

现在在接收数据的第二页上,我就是这样处理的:

    if (empty($_POST["copied_filename"])) {
    WHAT IT DOES WHEN THERE ARE NO ATTACHED FILES
    }

    else {
    $copied_filename = $_POST["copied_filename"];
    $copied_url = $_POST["copied_url"];
    $new_sessionid = $_POST['session_id'];


    foreach ($_POST["copied_filename"] as $copied_file) {
        $sql = "INSERT INTO ".$wpdb->prefix."estimate_images (code, url, filename, session_id, user_id) VALUES ('".$code."', '".$copied_url."', '".$copied_file."','".$new_sessionid."', '".$current_user->id."')";
        $wpdb->query($sql);

    }

它适用于文件名,但在我的数据库中插入的URL是“数组”......

我确信它是foreach格式,但我很难过&amp;不知道如何解决它。

非常感谢你的时间,非常感谢任何帮助!

4 个答案:

答案 0 :(得分:2)

if (empty($_POST["copied_filename"])) {
    //WHAT IT DOES WHEN THERE ARE NO ATTACHED FILES
}

else {
    $new_sessionid = $_POST['session_id'];

    foreach ($_POST["copied_filename"] as $k => $copied_file) {
        $copied_url = $_POST["copied_url"][$k];        

        $sql = "INSERT INTO ".$wpdb->prefix."estimate_images (code, url, filename, session_id, user_id) VALUES ('".$code."', '".$copied_url."', '".$copied_file."','".$new_sessionid."', '".$current_user->id."')";
        $wpdb->query($sql);
    }
}

答案 1 :(得分:1)

因为它们是数组。 echo无法正确显示数组。使用print_rvar_dump查看正确的结构。

如果要访问第一个元素,则需要回显$_POST["copied_filename"][0]

如果要访问所有元素,请使用foreach循环进行迭代。

答案 2 :(得分:1)

您的foreach仅在使用copied_filename。根据您的情况尝试这种方式:

foreach ($_POST["copied_filename"] as $key => $val) 
{
    $sql = "INSERT INTO ".$wpdb->prefix."estimate_images (code, url, filename, 
    session_id, user_id) VALUES ('".$code."', '".$copied_url[$key]."', 
    '".$val."','".$new_sessionid."', '".$current_user->id."')";
    $wpdb->query($sql);
}

答案 3 :(得分:0)

$ copied_url是一个数组。 要获取网址,您必须执行以下操作: $ copied_url [0]。 在你的情况下,也许这样的东西可以起作用:

for($i=0; $i< count($_POST["copied_filename"]); $i++) {
    $sql = "INSERT INTO ".$wpdb->prefix."estimate_images (code, url, filename, session_id, user_id) VALUES ('".$code."', '".$copied_url[$i]."', '".$copied_filename[$i]."','".$new_sessionid."', '".$current_user->id."')";
    $wpdb->query($sql);

}