好的,这个简单的小问题就是踢我的屁股。我在这里做错了什么?
$format = "'%s','%s','%s','%s','%s'";
$insertSQL = sprintf("INSERT INTO `Presentations` (serialnum, docurl, tracker, recipient, last_accessed) VALUES (". $format,$sn,$doc,$trackr,$recip,$lastacc ."')");
我意识到在那里附近还有一个额外的单引号,但我回应了$ insertSQL,如果我不添加它就会被切断。这是回声的样子,伴随着错误信息:
INSERT INTO `Presentations` (serialnum, docurl, tracker, recipient, last_accessed)
VALUES ('VT6Smic28','http%3A%2F%2Fgoogle.com%2Fdocs%2Fadoc.html','greg.mcgee%40advetel.com','gregmcgee%40yahoo.com','Tue%2C+21+Feb+2012+09%3A57%3A51+CST')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1
如果没有额外的单引号,我会收到一条类似的错误消息,除了它说它在“第1行附近”。
答案 0 :(得分:1)
在最后的括号('
)之前,您有一个尾随"')"
。你回应的并不重要;如果$format
是你真正投入查询的内容,为什么要这样呢?
答案:$format
不是您插入SQL的内容。你的意思是首先使用sprintf
,但没有。{/ p>
答案 1 :(得分:1)
将其更改为
$format = "'%s','%s','%s','%s','%s'";
$insertSQL = sprintf("INSERT INTO `Presentations` (serialnum, docurl, tracker, recipient, last_accessed) VALUES (". $format .")",$sn,$doc,$trackr,$recip,$lastacc);
答案 2 :(得分:0)
您正尝试将6个值插入到指定了5列的表中。使用您对sprintf
执行的方法,甚至不需要使用format
变量。您声明的其他变量应作为sprintf
的参数发送。
尝试使用
$insertSQL = sprintf("INSERT INTO `Presentations` (serialnum, docurl, tracker, recipient, last_accessed) VALUES (%s,%s,%s,%s,%s)", $sn,$doc,$trackr,$recip,$lastacc );
答案 3 :(得分:0)
$insertSQL = sprintf(
"INSERT INTO `Presentations` (serialnum, docurl, tracker, recipient, last_accessed) VALUES (" .$format, $sn, $doc, $trackr, $recip, $lastacc);
$insertSQL = $insertSQL . ");";
答案 4 :(得分:0)
我认为'
是个问题。否则它适用于我:http://sqlfiddle.com/#!2/d1f3a/1
答案 5 :(得分:0)
我认为这样可行:
$format = "'%s','%s','%s','%s','%s'";
$insertSQL = sprintf("
INSERT INTO `Presentations`
(serialnum, docurl, tracker, recipient, last_accessed)
VALUES (". $format.")"
,$sn,$doc,$trackr,$recip,$lastacc
);