$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
Я использую эту ссылку ответа
Используйте опцию ON DUPLICATE KEY UPDATE
для INSERT
.
INSERT INTO coins (id_name, name)
VALUES (?, ?)
ON DUPLICATE KEY UPDATE name = VALUES(name)
Если id_name
уже существует, столбец name
будет обновлен.
UPDATE coins SET name = 'xxx2' WHERE id_name = 'bitcoin'; IF @@ROWCOUNT = 0; INSERT INTO coins (name) VALUES ('new_coins');
У меня ошибка: # 1193 - неизвестная системная переменная 'ROWCOUNT'