2010-05-25 83 views
51

¿Podría alguien decirme cómo agregar una nueva línea en un texto que introduzco en una tabla MySql?Agregar un salto de línea en MySQL INSERTAR EN texto

Intenté usar el '\n' en la línea que ingresé con la instrucción INSERT INTO pero '\n' se muestra como está.

En realidad, he creado una tabla en MS Access con algunos datos. MS Access agrega una nueva línea con '\n'. Estoy convirtiendo los datos de la tabla de MS Access en MySql. Pero cuando convivo, el '\n' se ignora y todo el texto se muestra en una sola línea cuando lo visualizo desde la tabla MySql en un formulario PHP.

¿Alguien puede decirme cómo MySQL puede agregar una nueva línea en un texto? En espera de respuesta, gracias !!

+0

Encuentra responder aquí http: // stackoverflow.com/a/41448185/5466401 –

Respuesta

3

En primer lugar, si desea que se muestre en un formulario PHP, el medio es HTML, por lo que se representará una nueva línea con la etiqueta <br />. Verifique el código fuente HTML de la página; es posible que la nueva línea se represente solo como un salto de línea, en cuyo caso su problema es simplemente traducir el texto para enviarlo a un navegador web.

26

en una consulta SQL real, que acaba de añadir una nueva línea

INSERT INTO table (text) VALUES ('hi this is some text 
and this is a linefeed. 
and another'); 
-1

Me suena como que está confundiendo a los contenidos de la tabla de representación de los contenidos de alguna herramienta en particular.

Supongo que está utilizando el cliente de línea de comandos (shell), el mysql para ingresar y mostrar el texto en esta columna. También estoy adivinando que usted está \ n está siendo almacenado como una nueva línea y que es solo la forma en que se presenta lo que está causando su confusión.

Intente utilizar una herramienta de GUI para acceder a sus datos de MySQL.

0

En SQL o MySQL puede utilizar las funciones char o chr para entrar en un ASCII 13 para la alimentación de la línea de retorno de carro, el equivilent \n. Pero como ha dicho @David M, lo más probable es que el HTML lo muestre y un br es lo que funcionará.

+1

¿ASCII 13 no es '\ r'? Pensamiento '\ n' era ASCII 10. – hydroiodic

14

Para el registro, que quería añadir algunos saltos de línea en los datos existentes y me dieron \n funcionar bien ...

datos de la muestra:

Sentence. Sentence. Sentence 

lo hice:

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

Sin embargo, también funcionó con solo \r y solo \n.

+4

Lamentablemente no funciona si tiene abreviaturas en el texto, como "Sr. Smith", que se dividirán en 2 líneas. – bluish

+1

gracias, eso fue útil para mi situación en la que estoy haciendo análisis sintáctico y no puedo separarme en líneas reales en la inserción – salonMonsters

+0

Tenga en cuenta que, en general, solo desea usar \ n si está en un entorno de servidor UNIX, y \ r \ n si está en un entorno de servidor solo para Windows. No use \ r por sí mismo. Aquí hay una discusión sobre lo que significan, excepto que la información acerca de "Mac" que usa "\ r" está lamentablemente desactualizada: los Mac han usado el Unix "LF" estándar (\ n) exclusivamente durante 15 años. -> http://stackoverflow.com/questions/1552749/difference-between-cr-lf-lf-and-cr-line-break-types – XP84

58

Si estás bien con un comando SQL que se propaga a través de múltiples líneas, entonces oedo's sugerencia es la más fácil:

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

simplemente tuve una situación en la que era preferible tener la instrucción SQL en una sola línea, así que encontré que una combinación de CONCAT_WS() y CHAR() funcionó para mí.

INSERT INTO mytable (myfield) VALUES (CONCAT_WS(CHAR(10 using utf8), 'hi this is some text', 'and this is a linefeed.', 'and another')); 
9
INSERT INTO test VALUES('a line\nanother line'); 

\n simplemente funciona bien aquí

+8

No funciona para mí. –

+0

@JordanSilva y upvoters de su comentario: revisen [la respuesta de David M] (http://stackoverflow.com/a/2902909/286685) probablemente contenga su solución. –

+0

@StijndeWitt Fue hace mucho tiempo y no recuerdo cómo resolví el problema. Pero gracias por el consejo. –

-3

Usted puede simplemente reemplazar la totalidad \n con <br/> etiqueta de modo que cuando se muestra la página a continuación, se rompe la línea.

UPDATE table SET field = REPLACE(field, '\n', '<br/>') 
3
  1. usted tiene que reemplazar \n con <br/> antes de la inserción en la base de datos.

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

    En este caso en la tabla de base de datos, verá <br/> en lugar de nueva línea.

    p. Ej.

    First Line
    Second Line

    será parecida:

    First Line<br/>Second Line

  2. Otra forma de ver los datos con la nueva línea. Primero lee los datos de la base de datos. Y luego reemplace \n con <br/> p. :

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

    de salida:

    First Line Second Line

    First Line
    Second Line


    encontrará detalles sobre la función str_replace() aquí: http://php.net/manual/en/function.str-replace.php

+1

Debe usar la función nativa de PHP [nl2br()] (http://www.php.net/manual/en/function.nl2br.php) en lugar de str_replace para hacer esto. – bgondy

+1

De acuerdo: siempre debe evitar poner HTML en su base de datos. Eso debería hacerse en su código: mantenga los datos brutos en las tablas. – Scott

+0

De hecho. Por favor, nunca incluya HTML sin formato en el texto en la base de datos ... Se convertirá en una pesadilla de mantenimiento. ¿Qué vas a hacer cuando alguien use los caracteres normales '<', '>' y '&' en su texto ... ¿escapar? Si es así, ¿cómo vas a evitar escapar del '
' insertado? Creará un problema que no puede ser resuelto. –

3
INSERT INTO myTable VALUES("First line\r\nSecond line\r\nThird line"); 
3

MySQL puede grabar saltos de línea muy bien en la mayoría de los casos, pero el problema es, necesita <br /> etiquetas en la cadena real de su navegador para mostrar los descansos. Como mencionó PHP, puede usar la función nl2br() para convertir un carácter de salto de línea ("\n") en la etiqueta HTML <br />.

sólo lo utilizan como esto:

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

salida (en HTML):

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

Aquí hay un enlace al manual: http://php.net/manual/en/function.nl2br.php

Cuestiones relacionadas