Sql - 使用回车符插入文本

时间:2013-12-21 23:39:58

标签: php mysql sql codeigniter

在我的应用程序中,我将一个大文本作为post参数发送到服务器。该文字类似于以下代码:

  

{ “对象”:[{ “类型”: “路径”, “originX”: “中心”, “originY”: “中心”, “左”:138, “顶部”:250.25, “宽度”: 184,“喜   GHT “:254,” 填充 “:NULL,” overlayFill “:NULL,” 行程 “:{” 源 “:” 功能   anonymous(){\ n \ n var squareWidth = 10,squareDistance =   2; \ n \ n var 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,   squareWidth); \ n \ n返回patternCanvas; \ n
  \ N}”, “重复”: “重复”, “OFFSETX”:0 “OFFSETY”:0}, “strokeWidth”:15, “strokeDashArray”:NULL, “strokeLineCap”: “圆形”, “strokeLineJoin”: “圆形”, “strokeMiterLimit”:10 “将scaleX”:1, “的scaleY”:1, “角度”:0 “flipX”:假 “flipY”:假, “不透明性”:1, “可选择”:真的, “hasControls”:真实的, “hasBorders”:真实的, “hasRotatingPoint”:真实的, “transparentCorners”:真实的, “perPixelTargetFind”:假的, “影子”:空, “可见”:真实的, “clipTo”:空, “路径”:[[ “M”,69.5,0],[ “Q”,69.5,0,70,0],[ “Q”,70.5,0,70.75,0],[ “Q”,71, 0,71.5,....

因为你有回车。我想将此文本作为blob插入到mysql表中。但它没有成功。我认为原因是回车,因为没有回车的其他例子效果很好。

我如何成功将这种文字插入我的桌子?

顺便说一句,我正在使用带有db session的codeigniter cart类,并尝试将此文本保留为购物车项目选项。

2 个答案:

答案 0 :(得分:0)

你必须了解逃避是如何运作的。如果你把一些东西转移到这样的字符串中:

s = "Hello\nthere";

...然后结果将包含REAL换行符。变量本身看起来像“Hello”加上换行加上“那里”。现在,如果你把它交给某个sql,它将得到换行符,而不是反斜杠加n,这将是告诉sql插入换行符的正确版本。不,相反,你创建了一个sql字符串,在引号内有一个真正的换行符。

所以你必须说“让我们创建一个告诉sql插入换行符的字符串”,为此,你必须告诉语言(无论你使用哪种语言)来创建一个字符串,使得一个字符串能够生成换行。这就是为什么你必须逃脱已经逃脱的东西。这有点“告诉鲍勃告诉克莱尔来这里”的事情。

答案 1 :(得分:0)

所以我已经看过“我怎么能在PHP中逃避它”问题两次来自OP,所以这里是如何使用codeigniter在PHP中逃脱:

首先queries with CodeIgniter

您需要使用查询绑定来帮助确保在运行之前清除所有内容。

假设如下:

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

请注意两个问号。这些是我们输入值的占位符。

当我执行以下操作时

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

每个数组中的每个值都有一个1-1映射?所以第一个?将由迈克取代,第二个?将由Ashevile取代。这两个值都将被适当地转义。