Я отходил некоторые данные из щебета API запросов и анализ через PHP как так:Помогите мне отладить мой SQL INSERT, пожалуйста?
$i =0;
foreach ($tweetArray->results as $tweet) {
$timeStamp = strtotime($tweet->created_at);
$tweetDateTime = date('m-d-Y H:m:s', $timeStamp);
if($i > 0){
$SQL .= ',';
}
$SQL .= "(". $tweet->id .",'" . $tweet->from_user ."','". addslashes($tweet->profile_image_url) . "','". addslashes($tweet->text). "','" . $tweetDateTime ."')";
$i++;
}
$SQL .= " ON DUPLICATE KEY UPDATE 1=1";
Это оставляет меня с SQL заявление выглядит как это:
INSERT
INTO
tblTwitterSubmit (tweetId, twitterAuthor, authorAvatar, tweetText, tweetDateTime)
VALUES
(111,'name','http://url.com','a string of text','03-04-2011 13:03:09'),
(222,'anothername','http://url.com','another tweet','03-04-2011 12:03:51')
ON DUPLICATE KEY UPDATE 1=1;
Я, к сожалению, получив следующую ошибку: 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 '1=1' at line 1
.
Редактировать: 1 = 1 не должен ничего делать. Твиты не меняются, поэтому, если по какой-то причине я вытаскиваю одну и ту же спину дважды, ничего не произойдет, но она также не вызовет дублируемую ключевую ошибку.
Re-редактирование: Проблема, кажется, что-то делать с ключевым полем я использовал, который был идентификатора чирикать, присвоенный твиттере.
Я все-таки пересчитал код, так как показалось, что то, что я читал в статьях как «действительно хорошая идея», не было. Теперь я включил PDO submit внутри цикла for, поэтому я просто делаю кучу представлений вместо одной длинной строки sql.
Надеюсь, это лучшая практика.
Оставив это открытым на пару минут, надеясь на некоторую обратную связь, если это способ сделать это или нет.
Что конкретно 1 = 1? Я не эксперт MySQL, но для меня это выглядит бесполезным (и, возможно, недопустимым синтаксисом) для меня ... –
@ rlb.usa: быстрый взгляд на инструкцию SQL, опубликованную OP, показывает, что это не так. – mellamokb
Это только там, так что в базе данных есть что-то делать, если есть дубликат ключа, таким образом я не получаю сообщения об ошибках. –