PHP Directory Читать, считать и размер файла - PullRequest
0 голосов
/ 07 января 2012

У меня есть в основном работающий кусок кода для чтения каталога, вывода имени каждой папки и подсчета файлов и общего размера файлов в этом каталоге. Но по какой-то причине он пропускает некоторые папки и не вставляет информацию в мою базу данных.

Мой код:

<?php
if ($handle = opendir('E:/')) {

    while (false !== ($entry = readdir($handle))) {
        if ($entry != '$RECYCLE.BIN' && $entry != 'System Volume Information') {
        $exists = mysql_query("SELECT * FROM comics WHERE title LIKE '".$entry."%'");
        $exists1 = mysql_num_rows($exists);
            if ($exists1 != 1) {
            $directory = "E:/".$entry;
            $filecount = count(glob($directory."/"."*.*"));
            $size = 0; 
            $d = new RecursiveIteratorIterator( 
            new RecursiveDirectoryIterator($directory),  
            RecursiveIteratorIterator::SELF_FIRST 
            ); 

            foreach($d as $file){ 
            $size += $file->getSize(); 
            } 

                mysql_query("INSERT INTO comics (title, pages, size, storage_id) VALUES ('".$entry."\n', '".$filecount."', '".number_format($size/1048576, 2)."', '2')");
                print "<li>Inserted <b>".$entry."</b> With A File Count Of <b>".$filecount."</b> & A Total Size Of <b>".number_format($size/1048576, 2)."</b> MB.</li>";
            }
        }
    }
}
?>

Он пропускает простое имя папки, например Beyond The Wall of Sleep, и не добавляет их в базу данных, хотя выводит его так, как если бы он вводил его в базу данных. Куда я иду не так?

Пример вывода (папки не добавлены, но они все еще отображаются в списке):

•Inserted Ay Papi 1 With A File Count Of 22 & A Total Size Of 2.59 MB.
•Inserted Beyond The Wall of Sleep With A File Count Of 26 & A Total Size Of 14.92 MB.
•Inserted Fall of Cthulhu With A File Count Of 22 & A Total Size Of 7.57 MB.
•Inserted Heavy Metal - Fantasy Special With A File Count Of 98 & A Total Size Of 49.66 MB.

1 Ответ

1 голос
/ 07 января 2012

Когда вы добавляете запись в БД:

$sql = "INSERT INTO comics
        (title, pages, size, storage_id)
        VALUES ('".$entry."\n', '".$filecount."', '".number_format($size/1048576, 2)."', '2')";
mysql_query($sql);
print "<li>$sql</li>";

Затем получите строку, которую вы пытаетесь ввести в MySQL, перейдите в phpmyadmin или в терминал mysql и попытайтесь вставить этот запрос.Вы получите ошибку MySQL.

Еще один способ отладки:

$sql = "INSERT INTO comics
        (title, pages, size, storage_id)
        VALUES ('".$entry."\n', '".$filecount."', '".number_format($size/1048576, 2)."', '2')";
$res = mysql_query($sql);
print "<li>$sql</li>";
if (!$res)
{
  echo "Mysql Error: " . mysql_error();
}
...