2012-07-10 147 views
-2

我有打开,然后FTP服务器基于在里面哪些文件将数据插入到数据库中的一些代码foreach循环

我的问题是,它看起来$fname2只是调用第一个文件作为变量,并保持使用,而不是通过所有的文件名

$contents = ftp_nlist($conn_id, $dir); 
$unalteredcontents = ftp_nlist($conn_id, $dir); 

foreach($contents as $fname) 
{ 
    if (($fname != '.') && ($fname != '..')) 
    { 
     foreach ($unalteredcontents as $fname2) 
     { 
      if (($fname2 != '.') && ($fname2 !='..')) 
      { 
       $url = "http://website/userid/".$uid."/".$fname2.""; 
      } 
     } 

$fname2循环所返回的第一个文件作为变量整个循环 任何见解?

+0

每次循环运行时,您都将值赋给'$ url',但您不会对该值做任何事情。当循环退出时,它将保存'$ fname2'的最后一个值。你打算使用'$ url'做什么? – 2012-07-10 22:10:43

+0

$ url在循环后面的部分包含文件中被调用 – 2012-07-10 22:12:32

回答

0

适合我。这里是我的测试代码:

<?php 
// set up basic connection 
$ftp_server = "ftp.yoursite.com"; 
$ftp_user_name = "username"; 
$ftp_user_pass = "password"; 
$dir = "./public_html/cgi-bin"; // just a sample directory 
$uid = 1; 

$conn_id = ftp_connect($ftp_server); 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
$contents = ftp_nlist($conn_id, $dir); 
$unalteredcontents = ftp_nlist($conn_id, $dir); 

foreach($contents as $fname) 
{ 
    if (($fname != '.') && ($fname != '..')) 
    { 
     foreach ($unalteredcontents as $fname2) 
     { 
      if (($fname2 != '.') && ($fname2 !='..')) 
      { 
       echo "http://website/userid/".$uid."/".$fname2."\n"; 
      } 
     } 
    } 
} 

我关闭了括号并明确创建了与ftp相关的变量。

很难知道在特定情况下发生了什么。我假设你确定目录中确实存在多个文件?