[英]PHP MySQL, IF EXISTS update ELSE insert, Dosn't seem to work
我正在尝试让此代码更新是否存在参数,但是,当我执行任何操作时都没有发生(它确实说完成了,并且更新了产品,但是products_description的更新似乎没有用。代码在这里:
$query = "UPDATE products
SET products_reference='$varenummer', products_price='$pris'
WHERE products_id='$id';";
for ($x = 1; $x <= $amountOfLanguages; $x++) {
$varenavn = $_POST["varenavn-" . $x];
$korttekst = $_POST["korttekst-" . $x];
$langtekst = $_POST["langtekst-" . $x];
$query .= "IF EXISTS (SELECT * FROM products_description WHERE products_id='$id' AND languages_id='$x')
UPDATE products_description
SET products_description_name='$varenavn', products_description_short_description='$korttekst', products_description_description='$langtekst'
WHERE products_id='$id'
AND languages_id='$x'
ELSE
INSERT INTO products_description (products_id, languages_id, products_description_name, products_description_short_description, products_description_description)
VALUES ('$id', '$x', '$varenavn', '$korttekst', '$langtekst');";
}
if ($conn->multi_query($query) === TRUE) {
//header("Location: ./");
//die();
echo "done";
} else {
echo "Error: " . $query . "<br>" . $conn->error;
}
而且我不能真正使用ON DUPLICATE,因为我不知道唯一键,所以我只知道“ products_id”和“ languages_id”。
提前致谢。
在这种情况下,您可以在mysql中使用更简洁的语法-使用“重复更新”。 该查询的一般原则如下:
insert into `TABLE` ( `FIELD1`,`FIELD2`, `FIELD3` ) values ( 'VALUE1','VALUE2','VALUE3' )
on duplicate key
update
`FIELD1`='VALUE1',
`FIELD2`='VALUE2',
`FIELD1`='VALUE3';
Basing this on original query.
------------------------------
insert into `products_description`
(`products_id`, `languages_id`, `products_description_name`, `products_description_short_description`, `products_description_description` )
values
( '$id', '$x', '$varenavn', '$korttekst', '$langtekst' )
on duplicate key
update
`products_id`='$id',
`languages_id`='$x';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.