Добавление разрыва строки в тексте MySQL INSERT INTO - PullRequest
61 голосов
/ 25 мая 2010

Может кто-нибудь сказать мне, как добавить новую строку в текст, который я ввожу в таблицу MySql?

Я попытался использовать '\n' в строке, которую я ввел с оператором INSERT INTO, но '\n' отображается как есть.

На самом деле я создал таблицу в MS Access с некоторыми данными. MS Access добавляет новую строку с '\n'. Я конвертирую данные таблицы MS Access в MySql. Но когда я конвертирую, '\n' игнорируется, и весь текст отображается одной строкой, когда я отображаю его из таблицы MySql в форме PHP.

Может кто-нибудь сказать мне, как MySQL может добавить новую строку в текст? В ожидании ответа, спасибо !!

Ответы [ 11 ]

66 голосов
/ 11 февраля 2011

Если вы в порядке с командой SQL, которая распространяется на несколько строк, то предложение oedo самое простое:

INSERT INTO mytable (myfield) VALUES ('hi this is some text
and this is a linefeed.
and another');

У меня просто была ситуация, когда было предпочтительнее, чтобы оператор SQL находился в одной строке, поэтому я обнаружил, что комбинация CONCAT_WS() и CHAR() работает для я.

INSERT INTO mytable (myfield) VALUES (CONCAT_WS(CHAR(10 using utf8), 'hi this is some text', 'and this is a linefeed.', 'and another'));
30 голосов
/ 25 мая 2010

в реальном запросе SQL, вы просто добавляете новую строку

INSERT INTO table (text) VALUES ('hi this is some text
and this is a linefeed.
and another');
19 голосов
/ 10 декабря 2010

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

Пример данных:

Sentence. Sentence. Sentence

Я сделал:

UPDATE table SET field = REPLACE(field, '. ', '.\r\n')

Тем не менее, он также работал с \r и \n.

10 голосов
/ 30 ноября 2014

MySQL может записывать переносы строк в большинстве случаев очень хорошо, но проблема в том, что вам нужно <br /> тегов в текущей строке, чтобы ваш браузер отображал разрывы.Поскольку вы упомянули PHP, вы можете использовать функцию nl2br() для преобразования символа переноса строки ("\n") в тег HTML <br />.

Просто используйте его так:

<?php
echo nl2br("Hello, World!\n I hate you so much");
?>

Вывод ( в HTML ):

Hello, World!<br>I hate you so much

Вот ссылка на руководство: http://php.net/manual/en/function.nl2br.php

10 голосов
/ 03 мая 2012
INSERT INTO test VALUES('a line\nanother line');

\n здесь просто отлично работает

5 голосов
/ 06 апреля 2013
INSERT INTO myTable VALUES("First line\r\nSecond line\r\nThird line");
4 голосов
/ 25 мая 2010

Прежде всего, если вы хотите, чтобы он отображался в форме PHP, носителем является HTML, поэтому новая строка будет отображаться с тегом <br />. Проверьте исходный HTML-код страницы - возможно, новая строка будет отображена как разрыв строки, и в этом случае ваша проблема заключается просто в переводе текста для вывода в веб-браузер.

1 голос
/ 14 июня 2012
  1. Вы должны заменить \n на <br/> перед вставкой в ​​базу данных.

    $data = str_replace("\n", "<br/>", $data);

    В этом случае в таблице базы данных вы увидите <br/> вместо новой строки.

    , например

    First Line
    Second Line

    будет выглядеть так:

    First Line<br/>Second Line

  2. Еще один способ просмотра данных с новой строки. Сначала прочитайте данные из базы данных. А затем замените \n на <br/>, например. :

    echo $data;
    $data = str_replace("\n", "<br/>", $data);
    echo "<br/><br/>" . $data;

    выход:

    First Line Second Line

    First Line
    Second Line


    Подробности о функции str_replace () вы найдете здесь: http://php.net/manual/en/function.str-replace.php

0 голосов
/ 04 мая 2012

Вы можете просто заменить все \n на тег <br/>, чтобы при отображении страницы она ломалась.

UPDATE table SET field = REPLACE(field, '\n', '<br/>')
0 голосов
/ 25 мая 2010

В SQL или MySQL вы можете использовать функции char или chr для ввода в ASCII 13 для перевода строки возврата каретки, эквивалентного \n. Но, как заявил @David M, вы, скорее всего, захотите, чтобы HTML показывал этот разрыв, и br - это то, что сработает.

...