2013-12-21 70 views
0

在我的應用程序中,我發送一個大文本作爲post參數給服務器。文本如下面的代碼:Sql - 用回車插入文本返回

{「objects」:[{「type」:「path」,「originX」:「center」,「originY」:「center」,「left」:138 ,「top」:250.25,「width」:184,「hei ght」:254,「fill」:null,「overlayFill」:null,「stroke」:{「source」:「function anonymous ñ\ n變種squareWidth = 10,squareDistance = 2; \ n \ n變種patternCanvas = fabric.document.createElement( '畫布'); \ n
patternCanvas.width = patternCanvas.height = squareWidth + squareDistance; \ n var ctx = patternCanvas.getContext('2d'); \ n \ n ctx.fillStyle = \「#005E7A \」; \ n ctx.fillRect(0,0,squareWidth,「repeat」,「offsetX」:0,「offsetY」:0},「strokeWidth」:15,「strokeDashArray」返回patternCanvas; \ n
\ n} :NULL, 「strokeLineCap」: 「圓形」, 「strokeLineJoin」: 「圓形」, 「strokeMiterLimit」:10 「將scaleX」:1, 「的scaleY」:1, 「角度」:0 「flipX」:假」 flipY 「:假,」 不透明性 「:1,」 可選擇 「:真」 hasControls 「:真」 hasBorders 「:真」 hasRotatingPoint 「:真」 transparentCorners 「:真」 perPixelTargetFind 「:假,」 影子」日期null, 「可見」:真 「clipTo」:NULL, 「路徑」:[[ 「M」,69.5,0],[ 「Q」,69.5,0,70,0],[ 「Q」,70.5 ,0,70.75,0],[「Q」,71,0,71.5,...

正如你有回車在裏面。我想把這個文本作爲一個blob插入到mysql表中。但它不是成功的。我認爲其中的原因是回車,因爲沒有回車的其他例子效果不錯。

我該如何成功地將這種文本插入到我的表中?

順便說一下,我用數據庫會話codeigniter車類,並嘗試將此文本作爲購物車項目選項。

+0

你爲什麼不把它提交爲varchar而不是blob? –

+0

它會改變什麼嗎?因爲問題可能不是文本的大小,所以回車就會返回。 –

+0

使用查詢參數也解決了很多這樣的問題。 –

回答

0

你必須瞭解如何逃避工程。如果你把東西在一個字符串逃過這樣的:

s = "Hello\nthere"; 

...那麼結果將包含一個真正的換行。變量本身將看起來像「你好」,加上換行加「有」。現在如果你把這個交給一些sql,它將得到換行符,而不是反斜槓加n,這將是告訴sql插入換行符的正確版本。不,相反,你在引號內創建了一個帶有真正換行符的sql字符串。

所以你必須說「讓我們做一個告訴sql插入換行符的字符串」,並且要做到這一點,你必須告訴語言(無論你使用什麼)來創建一個字符串,做一個換行。這就是爲什麼你必須逃避已經逃脫的東西。這是有點「告訴鮑勃告訴克萊爾來這裏」的事情。

+0

非常感謝你,即時通訊使用codeigniter,我如何逃避它在php –

+0

(我從來沒有使用codeigniter)在PHP中,你有幾個選項逃避一個字符串;嘗試addslashes/addcslashes,他們幾乎總是足夠的,如果你知道你的字符串看起來像。 (如果它包含不可信的用戶輸入,請小心!) – dkellner

0

所以,我已經看到了從OP「我怎麼能逃脫它在PHP」問題的兩倍,因此這裏是如何在PHP中使用笨逃脫

首先queries with CodeIgniter

你需要使用查詢綁定以幫助確保在運行之前清理所有內容。

假設如下:

$sql = 'SELECT * FROM my_table WHERE first_name=? AND city=?'; 

注意兩個問號。這些是我們輸入值的佔位符。

當我做以下

$this->db->query($sql,array('Mike','Asheville')); 

有陣列中的1-1映射爲每個值到每個∞,所以第一?將由邁克取代,第二個?將被Ashevile取代。兩個值都將被適當地轉義。