Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在sql行中已有的值中添加新值_Php_Sql - Fatal编程技术网

Php 如何在sql行中已有的值中添加新值

Php 如何在sql行中已有的值中添加新值,php,sql,Php,Sql,我希望代码起作用,以便当用户赚取金额时,应将其添加到已付表中,例如,添加后应包含用户金额+已赚取 我的代码当前在每个索赔上都添加了一个新行,但是如果地址已经在表中,我想更新用户的余额 示例:用户余额为15.2,他们的收入为2.3。此余额应更新为17.5 $address = trim($_POST["address"]); $q = $sql->prepare("INSERT INTO ".$dbtable_prefix."Paid SET

我希望代码起作用,以便当用户赚取金额时,应将其添加到
已付
表中,例如,添加后应包含用户金额+已赚取

我的代码当前在每个索赔上都添加了一个新行,但是如果地址已经在表中,我想更新用户的余额

示例:用户余额为15.2,他们的收入为2.3。此余额应更新为17.5

$address = trim($_POST["address"]);
$q = $sql->prepare("INSERT INTO ".$dbtable_prefix."Paid
                    SET
                        `address` = ?,
                        `amount` = ?
                        ;");
$claimlog_reward = $reward;
if ($reward<1) {
    $claimlog_reward = number_format($reward, 8, '.', '');
}
$
q->execute(array(trim($_POST['address']), $claimlog_reward));
$address=trim($_POST[“address”]);
$q=$sql->prepare(“插入到“$dbtable_前缀中。”付费
设置
`地址`=?,
`金额`=?
;");
$claimlog\u奖励=$reward;
if($rewardexecute(数组(trim($_POST['address']),$claimlog_悬赏));

我假设MySQL/MariaDB-在重复键上添加一个
更新(假设您的地址是主键)

$address=trim($_POST[“address”]);
$claimlog\u奖励=$reward;
如果($rewardprepare(“插入“$dbtable_前缀”)已支付
设置'address`=:address,'amount`=:amount
重复密钥更新金额=金额+:金额“);
$q->bindValue(':address',trim($_POST['address']);
$q->bindValue(':amount',$claimlog\u reward);
$q->execute();

Do
UPDATE
如果
INSERT
则改为
。不要忘记
WHERE
子句,否则所有行都将更新。在这种情况下,如果用户在付费表中没有条目,您将失败您使用的是哪个数据库?它还将作为新行插入。这就是问题所在。您说过您不希望有多行具有相同地址,不是吗欧点?
$address = trim($_POST["address"]);
$claimlog_reward = $reward;
if ($reward<1) {
  $claimlog_reward = number_format($reward, 8, '.', '');
}

$q = $sql->prepare("INSERT INTO ".$dbtable_prefix."Paid
SET `address` = :address, `amount` = :amount
ON DUPLICATE KEY UPDATE amount = amount + :amount");
$q->bindValue(':address', trim($_POST['address']));
$q->bindValue(':amount', $claimlog_reward);
$q->execute();