【发布时间】:2014-09-24 12:56:27
【问题描述】:
<?php
$time=getdate();
$time['month'];
$temp_time=$time['month']." ".$time['year'];
$q="SELECT * FROM websiteviews ORDER BY id DESC LIMIT 1";
$r=mysqli_query($dbc, $q);
$r=mysqli_fetch_assoc($r);
if($temp_time==$r['timespan']){
$count=$r['view']+1;
$q="UPDATE websiteviews SET view='".$count."' WHERE id='".$r['id']."'";
mysqli_query($dbc, $q);
echo mysqli_error($dbc);
}
?>
各位朋友,每次加载网页时,我都会更新我网站的页面浏览量 这段代码放在页面顶部现在我的问题是这种机制会导致竞争条件我想锁定我的行直到它被更新请帮助 mysql 查询锁定特定行直到它被更新
【问题讨论】:
-
如果你使用mysqli,你真的应该使用准备好的语句
-
什么是表类型?
-
innoDB 上的表类型是 utf-8
-
@user3787783 只是为了澄清
utf-8是Character Set,不是表类型,它仅适用于那些存储字符数据的列。Storage Engine处理数据如何存储(持久化)。Storage Engine可以由ENGINE或TYPE关键字指定。支持TYPE关键字以实现向后兼容性。 (从版本3.23.0到4.0.18只有TYPE关键字可用。TYPE关键字现在已弃用。)