我正在尝试将产品从XML文件添加到数据库,并且当article number
重复时,我只想更新stock
级别。
我仍在学习PHP和MySQL,并且在该论坛上阅读了很多文章,但我无法使其正常工作。
所以我是这样做的:
$xml = simplexml_load_file("a-link-to-downloaded_products.xml") or die("Error: Cannot create object");
foreach ($xml->children() as $row) {
$article_code = $row->artikelnummer;
$brand = $row->merk;
$name_nl = $row->naam;
$ean = $row->ean;
$stock = $row->voorraad_aanwezig;
$sql = "INSERT INTO `products` (article_code,brand,name_nl,ean,stock) VALUES ('" . $article_code . "','" . $brand . "','" . $name_nl . "','" . $ean . "','" . $stock . "') ON DUPLICATE KEY UPDATE `stock` = VALUES(`$stock`)";
$result = mysqli_query($db, $sql);
..... etc .....
}
上面给我一个错误的说法
“字段列表”中的未知列“ 1”
或
您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以在第1行的'1)'附近使用正确的语法
由于第二个错误,我认为它与ON DUPLICATE KEY UPDATE stock = VALUES($stock)"
有关,但是我尝试了许多不同的变体,但我无法使其正常工作!我用了反引号,引号等。几乎所有我能想到的。
答案 0 :(得分:2)
只需替换一下:
ON DUPLICATE KEY UPDATE `stock` = VALUES(`$stock`)
使用:
ON DUPLICATE KEY UPDATE `stock` = VALUES(`stock`)
说明:VALUES()
子句中的ON DUPLICATE UPDATE
构造用于引用在INSERT
子句中传递的列值。
重要说明:SO上的任何人都会告诉您,您应该真正考虑使用prepared statement and parameterized queries,以便使查询更安全,更有效。