这个简单的查询出了点问题。谁能看到它?

时间:2012-02-21 16:14:51

标签: php mysql string insert

好的,这个简单的小问题就是踢我的屁股。我在这里做错了什么?

$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行附近”。

6 个答案:

答案 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 
                    );