php - 需要建议同时在mysql中插入两条记录

标签 php jquery html mysql ajax

我在拍卖网站上工作,用户可以在其中出价并赢得拍卖。在我的例子中,拍卖在出价结束时结束(管理员设置的出价数量)。所以我需要关于最终出价的建议。如果最终出价由 2 个不同的用户同时发出怎么办?

现在当有人点击出价按钮时,我正在向 ajax 发送请求并在那里插入记录。我知道的唯一方法是从数据库中检查剩余的出价并相应地插入(通过允许一个用户),但如果时间完全相同,可能会再次出现异常。同时我不想在那里再次浪费时间查询数据库,因为这会延迟投标并会造成更多麻烦。

这是我的出价 php 代码。

$cid = $_GET['cid'];

$uid = $_GET['uid'];
$pid = $_GET['pid'];
$type = $_GET['type'];
$date = date("Y-m-d H:i:s");

$placeBid = $obj->insert("bids",array("productid"=>$pid,"userid"=>$uid,"coinsid"=>$cid,"type"=>$type,"date"=> $日期));

如果($placeBid)
{
 //如果出价成功,更新硬币表中硬币的状态。
  $obj->update("coins","status=? where id=?",array(0,$cid));
 //同时更新产品表中的出价计数,以确保对特定产品的出价
  如果($type == '付费')
  {
      $obj->update("products","bidscount=bidscount+1 where id=?",array($pid));
   }
 //检查是否还有硬币留给用户

           //获取当前用户的出价硬币。
    $bidCoins = $obj->select("coins","*","userid=? and status=?",array($userid,1));

    如果($bidCoins)
    {

        $coinsHtml = 'X

            

选择您的硬币盒并出价

'; foreach((数组)$bidCoins 作为$bidCoinsR) { $b = ($bidCoinsR['type'] == 'free')?"(B)":""; 如果($bidCoinsR['type'] == 'free') { $类型 = 0; } else if($bidCoinsR['type'] == 'paid') { $类型 = 1; } $coinsHtml .= ''.$bidCoinsR["金额"].$b.''; } $coinsHtml .= '<input type="hidden"id="product_id"value=""name="product_id">'; echo $coinsHtml .= '
'; } 别的 { echo '你没有更多可用的硬币'; } }

你能给我推荐最好的方法吗?谢谢

最佳答案

一个非常通用的建议是在插入出价时锁定表格。它会消除您描述的竞争条件的任何可能性。你读过这个吗:

dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

关于php - 需要建议同时在mysql中插入两条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18373055/

相关文章:

php - linux 上 php 中日期和时间的奇怪问题

php - MySql 中的快速随机行

html - 您如何打开/关闭网站上的视网膜图像以检查差异?

php - 从按钮调用 PHP 函数以从表中删除行

javascript - 如何在 yii2 php 中添加 spinner/loader

javascript - 带滚动的弹出菜单

javascript - 更改将鼠标悬停在 session 时间按钮上的工具提示内容

html - HTML5音频停止功能

html - 如何停用输入的内存值?

java - Android 从 mySql 中获取数据