MySQL таблица в CSV с использованием PHP - без проблем с ограничителями - PullRequest
1 голос
/ 21 декабря 2011

Я получил хороший фрагмент, который запускает запрос к таблице и печатает его в формате csv. У меня есть только одна проблема с этим фрагментом: Некоторые данные в строках состоят из нескольких строк, а не из одного слова.

Теперь происходит то, что экспорт выглядит так:

Имя Телефон

Сообщение просто идет по имени и телефону и не ограничивается только сообщением «Мое имя» 1800080808

(я хочу, чтобы значение 'msg' было внутри куба msg и не указывало имя и телефон).

Есть ли у вас идеи, как я могу установить целую фразу значения в одном поле?

Отрывок:

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;

if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field'].";";
$i++;}
}
$csv_output .= "\n";
$values = mysql_query("SELECT * FROM ".$table."");

while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j].";";
}
$csv_output .= "\n";
}

$filename = $file."_".date("d-m-Y_H-i",time());

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");

print $csv_output;

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 21 декабря 2011

Если вам нужно сохранить новые строки, вы можете заменить их на html разрывы строк с помощью nl2br или экранированных символов (лучший подход IMO).

$value = nl2br($value);

// or...

$value = str_replace("\r", '', str_replace("\n", "\\n", $value));
1 голос
/ 21 декабря 2011

Вы должны быть в состоянии сделать это непосредственно в MySQL

Проверьте этот пост на SO: Как вывести результаты MySQL-запроса в формате CSV?

Который ссылается на эту статью: http://www.tech -recipes.com / гх / 1475 / сохранения-MySQL-запросов на результаты в-а-текст или-CSV-файл /

Надеюсь, это поможет.

Если вы предпочитаете пойти другим путем, просто убедитесь, что вы str_replace() что-то внутри поля совпадают с вашим разделителем, а также str_replace() любые символы, которые имеют значение в CSV-файле, \n и \r и т.д ...

1 голос
/ 21 декабря 2011

Вы можете заменить все новые строки пробелом в цикле for:

$csv_output .= str_replace("\n", " ", $rowr[$j]).";";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...