2010-05-25 15 views
51

क्या कोई मुझे बता सकता है कि एक पाठ में एक नई पंक्ति कैसे जोड़नी है जिसे मैं एक MySQL तालिका में दर्ज करता हूं?टेक्स्ट में MySQL INSERT में एक लाइन ब्रेक जोड़ना

मैंनेके साथ दर्ज की गई लाइन में '\n' का उपयोग करने की कोशिश की लेकिन '\n' जैसा दिखाया गया है।

असल में मैंने कुछ डेटा के साथ एमएस एक्सेस में एक टेबल बनाई है। एमएस एक्सेस '\n' के साथ नई लाइन जोड़ता है। मैं एमएस एक्सेस टेबल डेटा को MySQL में परिवर्तित कर रहा हूं। लेकिन जब मैं परिवर्तित करता हूं, '\n' को अनदेखा किया जाता है और जब मैं इसे PHP फॉर्म पर MySQL तालिका से प्रदर्शित करता हूं तो सभी टेक्स्ट एक पंक्ति में दिखाया जाता है।

क्या कोई मुझे बता सकता है कि MySQL टेक्स्ट में एक नई पंक्ति कैसे जोड़ सकता है? प्रतिक्रिया की प्रतीक्षा कर रहा है, धन्यवाद !!

+0

यहाँ का जवाब http खोजें: // stackoverflow.com/a/41448185/5466401 –

उत्तर

3

सबसे पहले, अगर आप चाहते हैं यह एक PHP प्रपत्र पर प्रदर्शित, मध्यम HTML और इसलिए एक नई लाइन <br /> टैग के साथ प्रदान की गई हो जाएगा। पृष्ठ के स्रोत एचटीएमएल की जांच करें - संभवत: एक लाइन ब्रेक के रूप में आपको नई लाइन प्रदान की जा सकती है, इस स्थिति में आपकी समस्या केवल वेब ब्राउज़र पर आउटपुट के लिए पाठ का अनुवाद करने में से एक है।

26
एक वास्तविक SQL क्वेरी में

, तो आप सिर्फ एक नई पंक्ति

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

यह मेरे लिए लग रहा है आप तालिका की सामग्री उन सामग्री के कुछ विशेष उपकरण का प्रतिपादन भ्रमित कर रहे हैं की तरह जोड़ें।

मुझे लगता है कि आप कमांड लाइन (खोल) क्लाइंट का उपयोग कर रहे हैं, mysql दोनों इस कॉलम में टेक्स्ट दर्ज करने और प्रदर्शित करने के लिए संकेत दें। मैं यह भी अनुमान लगा रहा हूं कि आप \ n को एक नई लाइन के रूप में संग्रहीत किया जा रहा है और यह केवल वही तरीका है जो इसे प्रस्तुत किया जा रहा है जिससे आपका भ्रम पैदा हो रहा है।

अपने MySQL डेटा तक पहुंचने के लिए एक जीयूआई उपकरण का उपयोग करने का प्रयास करें।

0

एसक्यूएल या MySQL में आप गाड़ी वापसी लाइन फ़ीड के लिए एक ASCII 13 में प्रवेश करने के लिए \n बराबर char या chr कार्यों का उपयोग कर सकते हैं। लेकिन जैसा कि @ डेविड एम ने कहा है, आप संभवतः एचटीएमएल को यह ब्रेक दिखाने की उम्मीद कर रहे हैं और एक ब्रा काम करेगा।

Sentence. Sentence. Sentence 
मैंने किया:

+1

ASCII 13 '\ r' नहीं है? विचार \ n' ASCII 10 था। – hydroiodic

14

रिकॉर्ड के लिए, मैं जोड़ने के लिए कुछ लाइन मौजूदा डेटा में टूट चाहता था और मैं \n ठीक काम मिल गया ...

नमूना डेटा

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

हालांकि, यह केवल \r और केवल \n के साथ काम किया।

+4

दुर्भाग्य से काम नहीं करता है यदि आपके टेक्स्ट में संक्षेप हैं, जैसे "श्री स्मिथ", जो 2 लाइनों में टूटा जाएगा। – bluish

+1

धन्यवाद, यह मेरी परिस्थिति में मददगार था जहां मैं पार्सिंग कर रहा हूं और डालने में वास्तविक लाइनों पर अलग नहीं हो सकता – salonMonsters

+0

ध्यान रखें कि सामान्य रूप से आप केवल \ n उपयोग करना चाहते हैं यदि यूनिक्स सर्वर वातावरण में, और \ r \ n यदि विंडोज़-केवल सर्वर वातावरण में है। अपने आप पर \ r का प्रयोग न करें। इन अर्थों पर एक चर्चा यहां दी गई है, सिवाय इसके कि यह ध्यान रखें कि "\ r" का उपयोग करके "मैक" की जानकारी को पुरानी पुरानी है - मैक मानक यूनिक्स "एलएफ" (\ n) का उपयोग विशेष रूप से लगभग 15 वर्षों तक कर रहा है। -> http://stackoverflow.com/questions/1552749/difference-between-cr-lf-lf-and-cr-line-break-types – XP84

58

आप किसी SQL आदेश है कि कई पंक्तियों में फैला के साथ ठीक कर रहे हैं, तो oedo's सुझाव सबसे आसान है:

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')); 
9
INSERT INTO test VALUES('a line\nanother line'); 

\n बस यहाँ

+8

यह मेरे लिए काम नहीं करता है। –

+0

@ जोर्डन सिल्वा और उनकी टिप्पणी के उपरोक्त: चेक आउट [डेविड एम द्वारा जवाब] (http://stackoverflow.com/a/2902909/286685) इसमें शायद आपका समाधान शामिल है। –

+0

@StijndeWitt यह बहुत समय पहले था और मुझे याद नहीं आया कि मैंने समस्या को कैसे हल किया। लेकिन टिप के लिए धन्यवाद। –

-3

ठीक काम करता है आप बस इसलिए जब पेज तो प्रदर्शित किया जाता है कि यह लाइन टूट जाता है <br/> टैग के साथ सभी \n बदल सकते हैं।

UPDATE table SET field = REPLACE(field, '\n', '<br/>') 
3
  1. आप डेटाबेस में इनसेट से पहले <br/> साथ \n को बदलने के लिए।

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

    डेटाबेस तालिका में इस मामले में आप नई लाइन के बजाय <br/> देखेंगे।

    उदा।

    First Line<br/>Second Line

  2. एक और तरीका है नई लाइन के साथ डेटा देखने के लिए:

    First Line
    Second Line

    तरह दिखाई देगा। डेटाबेस से पहले डेटा पढ़ें। और उसके बाद <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

+1

आपको ऐसा करने के लिए str_replace के बजाय PHP मूल फ़ंक्शन [nl2br()] (http://www.php.net/manual/en/function.nl2br.php) का उपयोग करना चाहिए। – bgondy

+1

सहमत - आपको हमेशा अपने डेटाबेस में HTML डालने से बचना चाहिए। यह आपके कोड में किया जाना चाहिए - तालिकाओं में कच्चे डेटा को रखें। वास्तव में – Scott

+0

। डीबी में पाठ में कच्चे HTML को कभी भी शामिल न करें ... यह एक रखरखाव दुःस्वप्न बन जाएगा। जब आप किसी सामान्य अक्षर '<', '>' और '&' उनके पाठ में उपयोग करते हैं तो आप क्या करने जा रहे हैं ... इसे से बचें? यदि हां, तो आप डाले गए '
'से बचने से कैसे बचेंगे? आप एक समस्या पैदा करेंगे जिसे हल नहीं किया जा सकता है। –

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

MySQL लाइनब्रेक ज्यादातर मामलों में ठीक रिकॉर्ड कर सकते हैं, लेकिन समस्या यह है कि आप टूट जाता है को दिखाने के लिए अपने ब्राउज़र के लिए वास्तविक स्ट्रिंग में <br /> टैग की जरूरत है। चूंकि आपने PHP का उल्लेख किया है, इसलिए आप nl2br() फ़ंक्शन को एक लाइनब्रेक वर्ण ("\n") को HTML <br /> टैग में परिवर्तित करने के लिए उपयोग कर सकते हैं।

बस इस तरह उपयोग:

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

आउटपुट (एचटीएमएल में):

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

यहाँ मैनुअल के लिए एक लिंक है: http://php.net/manual/en/function.nl2br.php

संबंधित मुद्दे