2015-06-20 69 views
0

我目前正在尝试制作一个网站,显示我拥有的所有数字电影。我目前正在一个页面上扫描电影目录并读取那里的每部电影,并提取名称并将其插入到我的mysql数据库中。php filectime返回错误

我还需要从文件中提取创建日期并插入。然而,当我在操作系统上搜索时,我尝试了所有可以找到的例子,并且发现了所有这些错误,并且无法找出错误来自哪里。我还需要以某种方式格式化创建日期,以适应MySQL数据库中的格式。

我正在使用基于Windows的机器。

代码:

include("config.php"); 

echo '<ul>'; 
if ($handle = opendir('M:/Movies/')) { 

while (false !== ($entry = readdir($handle))) { 
    if ($entry != '$RECYCLE.BIN' && $entry != 'System Volume Information' && $entry != '.' && $entry != '..') { 
    $replace = array(".avi",".mkv",".mp4"); 
    $title = str_replace($replace, "", $entry); 
    $exists = mysql_query('SELECT * FROM `mdw_movies` WHERE `title` LIKE "'.$title.'%"'); 
    $exists1 = mysql_num_rows($exists); 
     if ($exists1 == 0) { 
      $date = date('Y-m-d', filectime($entry)); // This is line 15 
      $query = "INSERT INTO `mdw_movies` (`title`) VALUES ('".$title."')"; 
      mysql_query($query); 
      print "<li>Inserted Movie <b>".$title."</b> (<b>".$date."</b>).</li>"; 
     } 
    } 
} 
} 
echo '</ul>'; 

错误:

Warning: filectime(): stat failed for Assassin's Creed - Embers.mp4 in C:\xampp\htdocs\movies\read.php on line 15 

回答

1

我找到了答案后通过一段时间对filectime PHP手册阅读。我错过了filectime()函数中文件的目录列表。

这里是我正确的代码供人们参考:

include("config.php"); 

$dir = 'M:/Movies/'; 

echo '<ol>'; 
if ($handle = opendir($dir)) { 

while (false !== ($entry = readdir($handle))) { 
    if ($entry != '$RECYCLE.BIN' && $entry != 'System Volume Information' && $entry != '.' && $entry != '..') { 
    $replace = array(".avi",".mkv",".mp4"); 
    $title = str_replace($replace, "", $entry); 
    $exists = mysql_query('SELECT * FROM `mdw_movies` WHERE `title` LIKE "'.$title.'%"'); 
    $exists1 = mysql_num_rows($exists); 
     if ($exists1 == 0) { 
      $date = date('Y-m-d', filectime($dir.$entry)); 
      $query = "INSERT INTO `mdw_movies` (`title`,`posted`) VALUES ('".$title."','".$date."')"; 
      mysql_query($query); 
      print "<li>Inserted Movie <b>".$title."</b> (<b>".$date."</b>).</li>"; 
     } 
    } 
} 
} 
echo '</ol>';