Что-то не так с этим простым запросом.Кто-нибудь может это увидеть? - PullRequest
0 голосов
/ 21 февраля 2012

ОК, этот простой маленький вопрос пинает меня в задницу. Что я тут не так делаю?

$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 ]

1 голос
/ 21 февраля 2012

Измените его на

$format = "'%s','%s','%s','%s','%s'";
$insertSQL = sprintf("INSERT INTO `Presentations` (serialnum, docurl, tracker, recipient, last_accessed)  VALUES (". $format .")",$sn,$doc,$trackr,$recip,$lastacc);
1 голос
/ 21 февраля 2012

У вас есть трейлинг ' прямо перед заключительными круглыми скобками ("')").Неважно, что вы повторили;зачем это нужно, если $format - это то, что вы действительно вводите в запрос?

Ответ: $format - это не то, что вы вставляете в SQL.Сначала вы хотели использовать sprintf, но не стали.

0 голосов
/ 21 февраля 2012

Я думаю, что это будет работать:

$format = "'%s','%s','%s','%s','%s'";
$insertSQL = sprintf("
    INSERT INTO `Presentations` 
      (serialnum, docurl, tracker, recipient, last_accessed)  
    VALUES (". $format.")"  
                    ,$sn,$doc,$trackr,$recip,$lastacc 
                    );
0 голосов
/ 21 февраля 2012

Это ' это проблема, я думаю. В противном случае это работает для меня: http://sqlfiddle.com/#!2/d1f3a/1

0 голосов
/ 21 февраля 2012
$insertSQL = sprintf(
    "INSERT INTO `Presentations` (serialnum, docurl, tracker, recipient, last_accessed)  VALUES (" .$format, $sn, $doc, $trackr, $recip, $lastacc);
$insertSQL = $insertSQL . ");";
0 голосов
/ 21 февраля 2012

Вы пытаетесь вставить 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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...