gpt4 book ai didi

php - "Insert SQL"通过将相同的值插入到列中

转载 作者:行者123 更新时间:2023-11-29 18:17:30 24 4
gpt4 key购买 nike

我有一个出价系统,可与自动出价机器人配合使用,并且还带有一个可供客户出价的按钮。

当客户端单击按钮时,它会调用执行以下查询的函数:

$qryins = "Insert into bid_account (user_id,bidpack_buy_date,bid_count,auction_id,product_id,bid_flag,bidding_price,bidding_type,bidding_time)
values('$uid',NOW(),'1','$aid','$prid','d',$newprice,'s'," . $oldtime . ")";

此查询位于 PHP 文件中。

机器人的部分是通过数据库中的一个过程完成的,使用以下命令,每秒运行一次:

Insert into bid_account (user_id, bidpack_buy_date, bid_count, auction_id, product_id, bid_flag, bidding_price, bidding_type, bidding_time)
SELECT prox_user_id, NOW(), '1', auctionID, productID, 'd', prox_valor, 's', auc_due_time FROM t_autolances
WHERE prox_valor NOT IN (SELECT bidding_price FROM bid_account WHERE auction_id=auctionID);

出价是通过计时器进行的,与美分拍卖相同。出现的问题是,如果客户在机器人出价的同时单击按钮,则会将相同的值写入数据库。

我需要它将不同的值写入“bidding_price”列,如下所示:

我需要这样写:

robot 0.25
customer 0.26

而不是这样:

robot 0.25
client 0.25

我不想把所有代码都放在这里,因为它太长了,所以我把最重要的部分放在这里。

$q = "select * from auc_due_table adt left join auction a on adt.auction_id=a.auctionID left join auction_management am on a.time_duration=am.auc_manage where auction_id=$aid";
$r = mysqli_query($db, $q);
$ob = mysqli_fetch_object($r);

$oldtime = $ob->auc_due_time;
$oldprice = $ob->auc_due_price;
$plusprice = $ob->auc_plus_price;
$plustime = $ob->auc_plus_time;
$newprice = $ob->pennyauction == 1 ? $oldprice + 0.01 : $oldprice + $plusprice;
$newtime = $oldtime < $plustime ? $plustime : $oldtime;

最佳答案

您需要在 SQL 中添加用户金额,而不是在 PHP 中。

$qryins = "Insert into bid_account (user_id,bidpack_buy_date,bid_count,auction_id,product_id,bid_flag,bidding_price,bidding_type,bidding_time)
SELECT '$uid', NOW(),'1', auction_id, '$prid','d',
auc_due_price + IF(pennyauction, 0.01, auc_plus_price), 's', auc_due_time
from auc_due_table adt
left join auction a on adt.auction_id=a.auctionID
left join auction_management am on a.time_duration=am.auc_manage
where auction_id=$aid";

另一种解决方案是使用事务。在 SELECT 查询之前启动事务,并在 INSERT 之后提交事务。

mysqli_query($db, "START TRANSACTION");
$r = mysqli_query($db, $q);
$ob = mysqli_fetch_object($r);
$oldtime = $ob->auc_due_time;
$oldprice = $ob->auc_due_price;
$plusprice = $ob->auc_plus_price;
$plustime = $ob->auc_plus_time;
$newprice = $ob->pennyauction == 1 ? $oldprice + 0.01 : $oldprice + $plusprice;
$newtime = $oldtime < $plustime ? $plustime : $oldtime;
$qryins = "...";
mysqli_query($db, $qryins);
mysqli_query($db, "COMMIT");

关于php - "Insert SQL"通过将相同的值插入到列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com