#php #mysql
#php #mysql
Вопрос:
select count(*) id from arts where what = 'file';
Результат — 1713
select title, count(*) c from arts group by title having c > 1;
результат — zero
— таким образом, дубликатов нет
$st = $db->query("select id, title, content from arts where what = 'file' order by title asc");
$st->execute();
$err = '';
while($row = $st->fetch()){
$path = '../temp/' . $row['title'];
$file = fopen($path . '.html', "w") or die("Unable to open file!");
if(!$file){
$err .= $row['title'] . ', ';
}
fwrite($file, $row['content']);
fclose($file);
}
echo $err;
ничего не повторяется, нет никаких ошибок или предупреждений, и 1711
файлы создаются.
Итак, отсутствуют два файла.
Я проверил заголовки — нет двойных пробелов, начальных и конечных пробелов, заголовки только буквенно-цифровые…
Как проверить, какие заголовки / файлы отсутствуют и почему?
Комментарии:
1. Я полагаю, вы используете
mysqli
? Затем вы можете использовать$st->num_rows
, чтобы получить количество возвращаемых строк.2. Возможно, вы столкнулись с проблемой максимальной длины имени файла, и у вас есть 2 заголовка, которые по этой длине одинаковы?
3. в Linux имена файлов чувствительны к регистру, но в Windows это не так. Вы используете Windows?
4. если вы используете «x» вместо «w» в качестве аргумента для fopen, произойдет сбой, если файл уже существует