teknik2008
@teknik2008
Расскажите про GOLANG. Мне интересно

ON DUPLICATE KEY UPDATE `count` = `count`+n. Работает в heidisql но не работает в php msqli?

Таблица
CREATE TABLE `ordered_products` (
	`product` INT(11) NOT NULL,
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`order` INT(11) NOT NULL,
	`count` INT(11) NULL DEFAULT '0',
	UNIQUE INDEX `order_pr` (`product`, `order`),
	UNIQUE INDEX `u` (`id`),
	INDEX `FK_ordered_products_orders` (`order`),
	INDEX `FK_ordered_products_products` (`product`),
	CONSTRAINT `FK_ordered_products_orders` FOREIGN KEY (`order`) REFERENCES `orders` (`id`),
	CONSTRAINT `FK_ordered_products_products` FOREIGN KEY (`product`) REFERENCES `products` (`id`)

Запрос
INSERT INTO 
   ordered_products (`product`,`order`,`count`) VALUES(683789,28,10)
   ON DUPLICATE KEY UPDATE ordered_products.`count`= ordered_products.`count`+10;

$sql="INSERT INTO ordered_products (`product`,`order`,`count`) 
    VALUES($product[id],$product[order],$product[count])
    ON DUPLICATE KEY UPDATE ordered_products.`count`=ordered_products.`count`+$product[count];";
echo $sql;
if ($result = mysqli_query($conect, $sql)) {
    $insert_id=mysqli_insert_id($conect);
}else{
    $response['success']=false;
    $response['error']="ошибка добовления/обновления";
    return $response;
}


Правильно суммирует в программе heidisql
Но не работает в php msqli
Я уже беру подготовленный запрос из php и вставляю в heidisql все норм.
Может я что-то упустил?
Проблема в том что не устанавливается значение суммы.
Пусть $product[count]=10, в базе count=50.
Через heidisql после вызова запроса будет в базе 60
А через php msqli будет 10
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы