Обновление или вставка запроса MYSQL в PHP с использованием if else

0
$getCoins = $this->code = $this->conn->prepare("UPDATE coins SET name = ? WHERE id_name = ? IF @@ROWCOUNT = 0 INSERT INTO coins (id_name) VALUES (?)");

for ($i=0; $i < count($coins) ; $i++) { 

    $id_name = $coins[$i]["id"];
    $name = $coins[$i]["name"];


    $getCoins = $this->code->bind_param('sss', $name, $id_name, $id_name);
    $getCoins = $this->code->execute();
    $getCoins = $this->code->store_result();

}

Сценарий возвращает мне ошибку:

Неустранимая ошибка: нечистая ошибка: вызов функции-члена bind_param() на boolean...

Проблема заключается в IF @@ROWCOUNT = 0 Я попытался использовать IF ELSEl

IF(SELECT COUNT(id_name) FROM coins WHERE id_name = 'bitcoin')
    UPDATE coins SET name = 'xxx2' WHERE id_name = 'bitcoin'
ELSE
    INSERT INTO coins (name) VALUES ('new_coins')
END IF

но слышать есть ошибка:

# 1064 - Что-то не так в вашем синтаксисе obok 'UPDATE coins SET name =' xxx2 'WHERE id_name =' bitcoin 'ELSE INSERT INTO coi' w linii 2

Я использую эту ссылку ответа

  • 0
    разделите ваши утверждения с помощью ';' и кажется странным, если вы поместите все свои запросы в один вызов.
  • 0
    @maSTAShuFu Вот так: ОБНОВИТЬ UPDATE coins SET name = 'xxx2' WHERE id_name = 'bitcoin'; IF @@ROWCOUNT = 0; INSERT INTO coins (name) VALUES ('new_coins'); У меня ошибка: # 1193 - неизвестная системная переменная 'ROWCOUNT'
Показать ещё 5 комментариев
Теги:
if-statement

1 ответ

1
Лучший ответ

Используйте опцию ON DUPLICATE KEY UPDATE для INSERT.

INSERT INTO coins (id_name, name)
VALUES (?, ?)
ON DUPLICATE KEY UPDATE name = VALUES(name)

Если id_name уже существует, столбец name будет обновлен.

  • 0
    Да, это работа. Спасибо ;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню