1

语言:PHP / MySQL

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

表单内的输入是:

  • 复制的文件名[]
  • 复制的_url []
  • 复制的_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 是单词“ Array ”......

我确定它是 foreach 格式,但我很难过并且不知道如何解决它。

非常感谢您的宝贵时间,任何帮助将不胜感激!

4

4 回答 4

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);
    }
}
于 2012-11-03T10:47:50.777 回答
1

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

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

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

于 2012-11-03T10:45:50.060 回答
1

您的 foreach 仅在 copy_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);
}
于 2012-11-03T10:49:33.097 回答
0

$copied_url 是一个数组。要获取 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);

}
于 2012-11-03T10:47:55.547 回答