Хорошо, теперь я начинаю крутиться. Слишком много проб и ошибок сделало меня довольно сварливым.не может использовать ON DUPLICATE KEY UPDATE с php-скриптом
Я пытаюсь сделать INSERT и UPDATE, если EXISTS использует цикл. Я исключил код цикла из этого примера, чтобы упростить мою проблему.
Вот запрос в моем PHP скрипт:
function insertrating($ratingid, $rating){
$link = resdb::connect();
$r = mysqli_query($link, "INSERT INTO propertyrating (id,name)"
."VALUES (\'$ratingid\',\'$rating\')\n"
."ON DUPLICATE KEY UPDATE\n"
."name = VALUES (name),\n"
."description = VALUES (description)\n"
. "");
if($r > 0){
return true;
}
}
$mydbclass = new $dbclass();
$mydbclass->insertrating('3','3 Star');
Таблица выглядит следующим образом: идентификатор INT имя VARCHAR (100) текстовое описание
Я не хочу, чтобы добавить описание в этом сцена. Следовательно, никаких параметров для этого столбца
Я выполнил тот же запрос в phpMyAdmin и в консоли MySQL, оба работают. Таким образом, я предполагаю, что это что-то связано с моим синтаксисом.
Кроме того, если я избавлюсь от функции и параметров ON DUPLICATE KEY UPDATE
, она будет работать. Однако, очевидно, не обновляет повторяющиеся строки.
Пожалуйста, спросите или исправьте, где я ошибаюсь. Благодарю.
EDIT: ЗАПРОШЕННЫЙ SQL
INSERT INTO
propertyrating
(
id,
name
)
VALUES
(
'3',
'3 Star'
)
ON DUPLICATE KEY UPDATE
name = VALUES (name),
description = VALUES (description)
AS ЗАПРОШЕННЫЙ UNIQUE * PK
Table is as follows:
ID INT УНИКАЛЬНЫЙ И PRIMARY KEY имя VARCHAR (100) текстовое описание
OK РЕБЯТА ERROR ВОЗВРАЩЕННОГО :
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 'UPDATEname = name,description = description
как вы можете видеть, нет промежутка между UPDATE и именем (он читает, UPDATEname). Я добавил пространство символов, и теперь все это подливка.
Большое спасибо за получение меня mysqli_error($link)
не знаю, как дать ответ на zerkms, но у всех привели меня в правильном направлении, в первую очередь.
код теперь стоит как:
$r = mysqli_query($link, "INSERT INTO propertyrating (id,name)"
."VALUES (\'$ratingid\',\'$rating\')\n"
."ON DUPLICATE KEY UPDATE\n"
."name = VALUES (name),\n"
."description = VALUES (description)\n"
. "") or die("Error: ".mysqli_error($link));
Замените '\ n' пробелом и покажите нам ** простой sql-запрос ** (без какого-либо php-кода), сгенерированный вашим скриптом. – zerkms
Как насчет 'echo mysqli_error ($ link);' сразу после 'mysqli_query'? – zerkms
Какая ошибка вы получаете? Этот запрос выглядит хорошо для меня ... У вас есть 'UNIQUE' on (' name'), если это возможно? Что-то еще происходит, так как запрос выглядит нормально ... – ircmaxell