目前我正在尝试创建一个可执行以下操作的脚本:
这是我到目前为止所做的,但它似乎不起作用(在某个时间点,它会插入,但不会更新,现在它似乎既不会这样做)
//build the query - the command/request to give to the database
$query = "INSERT INTO client (client.usrKey, client.name, client.prod, client.stage, client.points) VALUES
('" . $avatar_key . "', '" . $name . "', '" . $prod . "', '" . $stage . "', '" . $points ."')
ON DUPLICATE KEY UPDATE `points` = `points` +" . $points . " WHERE `slKey` = '" . $avatar_key . "' AND `prod` = '" . $prod . "'";
对此的任何帮助都将非常感激。
完全有可能我采取了错误的方法来解决这个问题,但是在搜索了几天之后,我对每种情况的推断都会提出强烈的建议来使用on duplicate key函数。
提前感谢您的帮助。
答案 0 :(得分:0)
如果你重新思考“这些东西应该如何运作”,那就更好了
你必须构建3个查询(我假设avatar_key是主键):
$fetch_client = "SELECT * FROM client WHERE userKey = '".$avatar_key."'";
// Check if exists with PHP and Mysql you know what to do :)
if($clientExists){
$update_client = "UPDATE client SET ... WHERE userKey = '".$avatar_key."'";
}else{
$insert_client = "INSERT INTO client (...) VALUES (...)";
}
答案 1 :(得分:0)
你略微过度思考INSERT INTO ... ON DUPLICATE KEY
- 语法。
看一下the manual,你会发现这个基本的例子:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
在你的情况下大致如下:
INSERT INTO client (`usrKey`, `name`, `prod`, `stage`, `points`) VALUES
('whatever', 'values', 'needed', 'in', 'there')
ON DUPLICATE KEY UPDATE `points` = `points` + your_points;
(稍微简化一下,让你对最终产品的外观有所了解,你应该从这里知道你的步骤并将其包装成php代码)。
您还可以在多个任务中将其分解,具体取决于您的应用程序的需求。