count () возвращает 1, когда тысячи записей - PullRequest
2 голосов
/ 29 ноября 2011

это число равно 1, если в этой папке тысячи записей.

// TV Shows
$dir = 'G:/TV';
if ($handle = opendir($dir)) {

    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {

        $check = mysql_query("SELECT * FROM tv_shows WHERE title = '$file'");
        $checkcount = mysql_num_rows($check);

        if ($checkcount == 0) {

            mysql_query("INSERT INTO tv_shows (id, title) VALUES ('', '$file')");

        }

    }

    echo count($dir)." Records Traversed!<br/>";

    closedir($handle);
}

Структура таблицы: id, заголовок

Структура папки: подпапки в основной

 G:\TV
 G:\TV\24
 G:\TV\Family Guy

Ответы [ 3 ]

5 голосов
/ 29 ноября 2011

Вы не можете использовать count() для папки. Попробуйте это вместо

// TV Shows
$dir = 'G:/TV';
$count = 0;
if ($handle = opendir($dir)) {

    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
        $count++;
        $check = mysql_query("SELECT * FROM tv_shows WHERE title = '$file'");
        $checkcount = mysql_num_rows($check);

        if ($checkcount == 0) {

            mysql_query("INSERT INTO tv_shows (id, title) VALUES ('', '$file')");

        }

    }

    echo $count." Records Traversed!<br/>";

    closedir($handle);
}

как насчет возврата количества новых вставленных записей?

Проверьте это, только что переехали $count++

// TV Shows
$dir = 'G:/TV';
$count = 0;
if ($handle = opendir($dir)) {

    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
        $check = mysql_query("SELECT * FROM tv_shows WHERE title = '$file'");
        $checkcount = mysql_num_rows($check);

        if ($checkcount == 0) {
            $count++;
            mysql_query("INSERT INTO tv_shows (id, title) VALUES ('', '$file')");

        }

    }

    echo $count." Records Traversed!<br/>";

    closedir($handle);
}
1 голос
/ 29 ноября 2011

Вы вызываете count() в строке, а не в массиве.

CodePad .

0 голосов
/ 29 ноября 2011

Также хорошей альтернативой этому является использование функции php glob.$dir_path = "/full/directory/path/";$count = count(glob($dir_path . "*"));Это также оптимизирует ваш код !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...