Ошибка возврата PHP при использовании FGETCSV [дубликата
Вопрос
Возможный дубликат:
mysql_fetch_array () ожидает параметр 1, чтобы быть ресурсом, логический, приведенный в выборе
Привет, я пытаюсь обработать CSV с fgetcsv, но я все, что я собираюсь бесконечной петлей ошибок
Предупреждение: Fopen («плитка», «пользователь» ...) в TESTCSV.PHP на линии 5
ПРЕДУПРЕЖДЕНИЕ: FGETCSV () ожидает, что параметр 1 должен быть ресурсом, логический, приведенный в /home/ratena/public_html/proc_files/testcsv.php на линии 6
<?php
$uploadcsv = "/home/ratena/public_html/temp/files/BatchLoadPM15.csv";
$filecsv = file_get_contents($uploadcsv);
//$batchid = $_POST['batchid'];
$handle = fopen("$filecsv", "r");
while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {
print_r($data);
}
?>
Решение
эта часть возникла проблема
/* this is un-necessary */
$filecsv = file_get_contents($uploadcsv);
/* this expecting a file in */
$handle = fopen("$filecsv", "r");
Попробуйте заменить 3 строки только это
$handle = fopen($uploadcsv, 'r');
Пропустить первый ряд
$column_headers = array();
$row_count = 0;
while (($data = fgetcsv($handle, 100000, ",")) !== FALSE)
{
if ($row_count==0)
{
$column_headers = $data;
}
else
{
print_r($data);
}
++$row_count;
}
Другие советы
Вы загружаете файл CSV в строку $filecsv
и используя эту строку в качестве имени файла в fopen
!!
Нет необходимости загружать файл, просто пропустите имя файла CSV на fopen
.
Также не забудьте проверить возвращаемое значение fopen
всегда раньше Вы идете вперед и прочитайте.
$uploadcsv = "/home/namebob/public_html/temp/files/BatchLoadPM15.csv";
// try to open the file.
$handle = fopen($uploadcsv, "r");
// error checking.
if($handle === false) {
die("Error opening $uploadcsv");
}
// to skip the header.
$skip = true;
// file successfully open..now read from it.
while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {
// if header..don't print and negate the flag.
if($skip) {
$skip = !$skip;
// else..print.
} else {
print_r($data);
}
}
Это потому, что вы пытаетесь открыть содержимое файла, а не имя файла. Удалить file_get_contents
линия и заменить fopen
Позвоните с:
$handle = fopen($uploadcsv, 'r');
Это должно сделать это ...
Похоже, ваш первый ряд содержит заголовки. Пропустить ряд один.