Экспорт PHP в CSV без запроса ИЛИ - PullRequest
0 голосов
/ 16 ноября 2018

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

$form_field_number_UPD = preg_replace('(\W{3}.*)', '\n', $form_field_number);

Моя проблема в том, что мне нужно экспортировать эти пользовательские переменные вместо необработанных результатов запроса.

Возможно ли это?

Кроме того,

Я пытался использовать регулярные выражения в MySQL 5.7, но мне не повезло.Есть ли в MySQL 5.7 эквивалент preg_replace?Я еще не нашел.Кажется, что есть в MySQL 7, но я не могу обновиться.

мой php, для которого я хотел бы найти эквивалент mysql для:

$form_field_number_UPD = preg_replace('(\W{3}.*)', '\n', $form_field_number);

Я пробовал ниже, но он не работает.

REPLACE(fd.form_field_number, '(\W{3}.*)', '\n', 1, 5) AS New_Field 

Спасибо за любую помощь, даже если это "посмотрите здесь ..."

Revised ::

У меня есть столбец группы флажков, гдеРезультаты:

result 1|~|result 1
result 2|~|result 2
result 3|~|result 3

Регулярное выражение удаляет | ~ |и все справа от него, поэтому результаты:

result 1
result 2
result 3

Я могу сделать это в php, но мне нужно получить эти результаты в загружаемом CSV-файле.

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Если ваш столбец всегда обозначен символом |~|, вам не нужно регулярное выражение;ищите вхождения этой точной последовательности и используйте SUBSTR, чтобы отрубить остаток вашей строки:

SELECT SUBSTR(fd.form_field_number, 1, LOCATE('|~|', fd.form_field_number)-1) AS trimmed
FROM ...
0 голосов
/ 19 ноября 2018

Ну, я на полпути.Мне нужно было использовать php, и у меня есть php, работающий на дисплее.Теперь мне нужно преобразовать результаты в массив и передать их в экспорт в csv.

Мне нужно передать результаты php из foreach, а не из результата запроса, потому что мне нужно использовать регулярное выражение для настройки столбца результатов.

Хотя я мог бы использовать $res_UPD или массив $ list, но безуспешно.

Ниже приведено то, что я использовал до сих пор.Я запутался, где поставить функцию для вывода, а также создать файл CSV.Выше или ниже foreach?

Любая помощь приветствуется, и если дать мне знать, что я далеко от базы и смотрю ...

    header("Content-Type: text/csv");
    header("Content-Disposition: attachment; filename=$q1b.csv");

    switch( $q1b )
    {
        case "research-request":


                $query = "SELECT
                            DATE_FORMAT(FROM_UNIXTIME(fd.entry_date), '%Y-%m-%d') AS date_formatted,
                            fd.entry_id,
                            fd.form_field_1 AS FIRST_NAME,
                            fd.form_field_2 AS LAST_NAME,
                            fd.form_field_3 AS EMAIL,
                            fd.form_field_957 AS checkbox_field, /* checkbox group */
                        FROM db_table AS fd
                        WHERE 1  ORDER BY date_formatted DESC";
            break;

    }

    $res = $this->EE->db->query($query);

        if ($res->num_rows() > 0)
        {

            foreach($res->result_array() as $row)
            {
                $date_formatted = $row['date_formatted'];
                $FIRST_NAME = $row['FIRST_NAME'];
                $LAST_NAME = $row['LAST_NAME'];
                $EMAIL = $row['EMAIL'];
                $checkbox_field = $row['checkbox_field'];
                $checkbox_field_UPD = preg_replace('(\W{3}.*)', '\n', $checkbox_field);

                $res_UPD = 
                $date_formatted.",".$FIRST_NAME.",".$LAST_NAME.",".$EMAIL.",".$checkbox_field_UPD;

                $list = array($date_formatted,$FIRST_NAME,$LAST_NAME,$EMAIL,$checkbox_field_UPD);

            }

        }
0 голосов
/ 16 ноября 2018

Я бы предложил получить массив данных, которые вы хотели бы экспортировать в php, используя запрос MySQL SELECT и используя оператор php preg_replace(), поскольку вы знаете, что это работает.Экспорт замененных данных в CSV-файл из массива php довольно прост.

Эта ссылка содержит ответы с примерами кода того, как это можно сделать: Экспорт в CSV через PHP

...