2010-11-27 159 views
0

我用使preg_split除去从鸣叫邮件ID标签信息等,这是从Twitter原始输出SQL语法错误(“/,/”,

标签:search.twitter.com 2005年:7551711354822656

我申请使preg_split摆脱 '标签:search.twitter.com'。像

$arr = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->id))"); 
    $msg_ID = $arr[1]; 

&插入$ MSG_ID [1]为表现在,我同样适用于消息的内容,其Twitter的输出

#DIYse_D DELIVERAB: twitter messages 1, 9th OCT 2010 

我申请使preg_split摆脱从它的Twitter消息1“像

$arr2 = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->content))"); 
    $msg = $arr[1]; 

&插入$味精[1]成表,但它提出的SQL语法错误。好的,这里的一件事是,在$ status-> id输出中,twitter在id的开始处添加了标签,而在这里它在原始消息内容中添加了“twitter消息1”。
这里是SQL插入查询

INSERT INTO msg2(id,msg,msg_id,depth,name) VALUES ('','$msg','$msg_ID','0','$name') 
+0

你可以添加你的SQL命令吗? – thejh 2010-11-27 13:15:36

+0

@thejh,我将sql insert语句添加到OP – XCeptable 2010-11-27 13:22:14

回答

2
$arr = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->id))"); 
         ^--here           ^--here 
$arr2 = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->content))"); 
          ^---here            ^---here 

四个双引号我已经表明转的“代码”那些位到文本字符串。你不是试图分割strip_tags函数调用的结果,而是试图分割一个字符串“strip_tags(etc ...)”。删除双引号,这样PHP会看到它是一个函数调用,而不是字符串。

由于该文字字符串中没有逗号,因此不会有任何$arr2[1]值,因此您试图向数据库中插入空白(或空值)。

同时,改变你的函数序列:

mysql_real_escape_string(strip_tags(etc...)) 

转义数据库插入应该是你插入前做的最后一件事。 strip_tags可能会改变转义的顺序并产生一个'bad'字符串,从而导致SQL注入攻击。