我目前正在尝试创建一个可以显示我拥有的所有数字电影的网站。我目前正在编写一个页面来扫描电影目录,并在那里读取每部电影并提取名称并将其插入我的mysql数据库。
我还需要从文件中提取创建日期并插入它。然而,当我在这里搜索OS时,我尝试了所有可以找到的例子,我得到了所有这些错误,无法弄清楚错误的来源。我还需要以某种方式格式化创建日期,以使其符合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
答案 0 :(得分: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>';