PHP获取目录中的文件

PHP获取目录中的文件,php,mysql,Php,Mysql,首先,对于一些人来说,这可能是一个愚蠢的问题,但由于我是一个新手,我仍然在边做边学习。所以我的问题是: 我正在尝试获取目录中的所有文件,以便将其内容插入数据库。我目前正在使用localhost。使用函数,我得到了我需要的。但我有个问题。由于函数返回文件名的arraylist,如何获取当前正在读取的文件名,并将其插入数据库表中 这是我目前的代码,我从中得到: 同样,我也需要将文件名插入到数据库中,但在我当前的代码中,文件名不会被插入。我认为您不应该使用这种方法。 每次运行脚本时,您可能(也可能会)

首先,对于一些人来说,这可能是一个愚蠢的问题,但由于我是一个新手,我仍然在边做边学习。所以我的问题是:

我正在尝试获取目录中的所有文件,以便将其内容插入数据库。我目前正在使用localhost。使用函数,我得到了我需要的。但我有个问题。由于函数返回文件名的arraylist,如何获取当前正在读取的文件名,并将其插入数据库表中

这是我目前的代码,我从中得到:


同样,我也需要将文件名插入到数据库中,但在我当前的代码中,文件名不会被插入。

我认为您不应该使用这种方法。 每次运行脚本时,您可能(也可能会)杀死数据库(特别是如果此目录中有许多文件,每个csv文件中有许多行)。 似乎最好准备一个事务,一次插入多个值,然后提交。 这样,您还可以轻松地回显查询,查看是否一切正常

请注意,您应该检查文件名是一个文件还是一个目录(我不确定。和..但您可能也需要检查)

另外,我建议你做一些类似的事情

$someVar = glob($dir."*.csv");
foreach($someVar as $filename) {
    // your code here
}
刚刚注意到: 在您的语句中,$filename.是错误的。它应该是
“$filename”

您应该首先组装sql命令,然后将其作为单个语句执行,如下所示:

$glob=glob($dir."*.csv");
foreach ($glob as $filename) {
  $handle = fopen($filename,"r");
  while ($da = fgetcsv ($handle,1000,",","'")) {
    if ($da[0]) $data[]="('','$filename','".JOIN("','",array_slice($da,0,2))."')";
  }
} 
$mysql="INSERT INTO tblCoordinates (id,filename,lat,lon)  VALUES\n".JOIN(",\n",$data);
// echo $mysql // --> check it first ...
mysql_query($mysql);
$dir='./'.
中运行我的数据时,
echo
给了我这个消息

INSERT INTO tblCoordinates (id,filename,lat,lon)  VALUES 
('','./dat.csv','1','23'),
('','./dat.csv','2','27'),
('','./dat.csv','3','31'),
('','./dat.csv','4','35'),
('','./dat.csv','5','39')
您的语句是什么样的?最重要的是,您的错误消息是什么



(当然,
mysql\u query()
函数已被弃用,请改用
mysqli\u query()
函数…

如果(数据[0]){条件在代码中的作用是什么???从何而来???在@Saty上面添加了该信息,谢谢
print\r($filename)
如果是,结果会是什么?是的,文件夹中可能有很多文件,csv文件中有很多行,虽然我知道该目录存在,但我不知道该目录中的文件名。因此,我使用了glob()。但我无法获取文件名。在表中,文件名的值为na daHave,您是否尝试使用xdebug?或var_dump($filename);来检查不同的文件名。我很确定您在这里有一些特殊情况,因为您不使用预先准备好的语句,如果文件名有特殊字符,if可能会打断您的插入,从而产生奇怪的结果。我刚意识到您编辑了代码,并且似乎在fopen之后有一个尾随};这打破了你的循环!我真的很想使用mysqli,因为这是应该使用的,但我的老板说我只使用mysql。所以,我不能否认这一点。谢谢,我会试试的。@cars10先生,再次谢谢,我已经试过了,但是现在,它没有插入到我的表中。我通常先在单独的SQL命令窗口中尝试生成的SQL命令,然后再将我的php脚本切换到“live”…只是注意到
values
子句中奇怪的
'
值:如果
id
自动增量列,那么您可能应该离开此列在您的insert语句之外,例如
插入到tblCoordinates(filename,lat,lon)值('./dat.csv','1','23'),…
谢谢您提供的所有提示和帮助,Cars10先生
INSERT INTO tblCoordinates (id,filename,lat,lon)  VALUES 
('','./dat.csv','1','23'),
('','./dat.csv','2','27'),
('','./dat.csv','3','31'),
('','./dat.csv','4','35'),
('','./dat.csv','5','39')