SQL语法错误(“/,/”,
问题描述:
我用使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')
答
$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注入攻击。
你可以添加你的SQL命令吗? – thejh 2010-11-27 13:15:36
@thejh,我将sql insert语句添加到OP – XCeptable 2010-11-27 13:22:14