建一个出价表(cj): id spid maxgold renid 某人出价时: //如果出价高于已经存在的最高价,则更新最高出价金额及出价人ID $sql="update cj set maxgold=出价,renid=出价人ID where spid=商品ID and maxgold<出价" $result=@mysql_db_query($conf_db,$sql,$dblink); //查询最高出价人ID是否为本人 $sql="select id from cj where renid=出价人ID and spid=商品ID" $result=@mysql_db_query($conf_db,$sql,$dblink); if ($rst=@mysql_fetch_assoc($result)) { //如果能查到这条记录证明还没有出价超过他的人 //证明出价成功,可以在这里进行减其金额或其它处理 }
某人出价时:
//如果出价高于已经存在的最高价,则更新最高出价金额及出价人ID
$sql="update cj set maxgold=出价,renid=出价人ID where spid=商品ID and maxgold<出价"
$result=@mysql_db_query($conf_db,$sql,$dblink);
//查询最高出价人ID是否为本人
$sql="select id from cj where renid=出价人ID and spid=商品ID"
$result=@mysql_db_query($conf_db,$sql,$dblink);
if ($rst=@mysql_fetch_assoc($result))
{
//如果能查到这条记录证明还没有出价超过他的人
//证明出价成功,可以在这里进行减其金额或其它处理
}
回: twt326(天地小子)
你的//查询最高出价人ID是否为本人的意思不太懂。
两个人同时在12:00出价200块,这种情况下查询最高出价人有什么用呢?ps:我刚突然想到,把价格那个字段设成唯一的是不是就可以避免这种情况?:)
因为数据库只是个容器,他并不能预先知道将会发生什么样的冲突。所以他只能提供一些预防冲突的手段,供程序员使用。大型数据库多提供表锁和记录锁,mysql是轻型数据库,只提供表锁。