2012-11-03 39 views
1

语言: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); 

    } 

它工作正常的文件名,但插入我的数据库中的网址是词“Array”...

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

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

+2

使用'print_r($ _ POST [“copied_filename”])'看看,这个变量有什么结构。 – bidifx

+0

它看起来像你的$ copied_url是一个数组,需要使用php implode()函数转换为字符串。或者甚至更好的解决方案是将它作为一个字符串在开始 –

+0

我改变了你的foreach循环了一下,检查我的答案。让我知道它是否正常工作 – kidz

回答

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); 
    } 
} 
+0

非常感谢您分享您的知识,我很感激! :) – Mafia

1

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

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

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

+0

感谢您的回复,我如何将其与当前使用的foreach结合使用? – Mafia

0

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

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); 

} 
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); 
}