В настоящее время я пытаюсь выполнить довольно простую задачу. Информация извлекается «post.php» там, где она обрабатывается и должна быть вставлена в базу данных, если идентификатор (автоинкремент) не существует или обновлять данные, если ID существует.ON DUPLICATE KEY не работает
Запуск сценария ничего не записывает в базе данных. Я попытался распечатать запрос на странице и скопировать/вставить SQL в PhpMyAdmin. Он возвращает
# 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с длинным описанием, мобильным, типом, сообщением, встраиванием, live, img_url) VALUES ('', 'TE' по строке 1
Мой код:
$query="INSERT INTO
xxy
(ID
, name
, address
, lat
, long
, description
, mobile
, type
, reported
, embed
, live
, img_url
) VALUES ('$ id', '$ name', '$ address', '$ lat', '$ lon', '$ description', '$ mobile', '$ type', '$ reporting', ' $ embed ',' $ live ',' $ target_file ') ON DUPLICATE KEY UPDATE
name
= VALUES (' $ name '), address
= VALUES (' $ address '), lat
= VALUES (' $ lat '), long
= VALUES ('$ lon'), description
= VALUES ('$ description'), mobile
= VALUES ('$ mobile'), type
= VALUES ('$ type'), reported
= VALUES ('$ reports'), embed
= VALUES ('$ embed'), live
= VALUES ('$ live'), img_url
= VALUES ('$ img_url') ";
Благодарим за помощь!
UPDATE:
Я также попытался backticking зарезервированных слов. Мой текущий код SQL все еще возвращает ошибку.
1064 - У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' $ name '), address = VALUES (' $ address '), lat = VALUES (' $ lat '), lon = VALUES (' $ долгота «), де» в строке 2
обновленный SQL код, я использую это:
INSERT INTO `xxy` (`ID`, `name`, `address`, `lat`, `lon`,
`description`, `mobile`, `type`, `reported`, `embed`, `live`,
`img_url`) VALUES('$id', '$name', '$address', '$lat', '$lon',
'$description', '$mobile', '$type', '$reported', '$embed', '$live',
'$target_file') ON DUPLICATE KEY UPDATE `name`=VALUES('$name'),
`address`=VALUES('$address'), `lat`=VALUES('$lat'),
`lon`=VALUES('$lon'), `description`=VALUES('$description'),
`mobile`=VALUES('$mobile'), `type`=VALUES('$type'),
`reported`=VALUES('$reported'), `embed`=VALUES('$embed'),
`live`=VALUES('$live'), `img_url`=VALUES('$img_url')
вы, вероятно, используя символ, который MySQL не согласен, будучи апострофом. I.e .: «Кофейня Джона», я прав? Если это так, MySQL интерпретирует это как «Кофейня Джона», вызывая синтаксическую ошибку. Вам нужно будет избежать данных. –
Я также попытался выполнить вышеуказанный код непосредственно в PMA. Все еще дает ту же ошибку –
'ON DUPLICATE KEY UPDATE name = '$ name', address = '$ address' ...' Не нужно добавлять 'VALUES' – ojovirtual