作者Boston (Boston)
看板PHP
标题[请益] 防止资料重复写入资料库内
时间Sat Jul 21 23:58:18 2012
是这样的
由於每次跑php都跑很久(或许是写入的回圈跑太多)
所以必须把资料防止重复写进资料库内
於是我写了以下程式码:
foreach($_SESSION['statuses']['data'] as $s)
{
$status_id=$s['id'];
/*开始判断是否有重复资料*/
$sql = "SELECT * FROM `status`where `status_id`='$status_id'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
if($row[status_id]!=$status_id) 开始判断
{
$user_id=$s['from']['id'];
$status_message=$s['message'];
$status_updated_time=substr($s['updated_time'],0,19);
$status_likes_numbers=count($s['likes']['data']);
.
.
.
.
.
}
}
/*结束判断是否有重复资料*/
if($dbin)
{
echo "status资料已写入";
}
else
{
echo "status写入失败";
}
}
大概是这样的防止重复资料写入
我是利用session的值跟sql主键的值判断後,来决定资料是否要写入
但是这方法写好後,php网页还是跑很慢
於是就在想能不能把判断写在回圈外?
这样的话就不用一直跑回圈判断是否写入,并且加速php读取速度?
以及可以写在回圈外判断是否写入的话,该如何撰写程式码呢?
php新手,请版友们多指教
ps.user单一资料量预估至少上百笔
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.254.179.115
1F:→ arrack:红色地方的逻辑好像怪怪的 07/22 00:30
2F:→ arrack:你应该降低SQL读取的数量... 07/22 00:31
逻辑的地方是 判断资料库主键与SESSION是否一致
不知道逻辑有没有写错...
降低SQL读取数量,我会往这方面去想,谢谢
※ 编辑: Boston 来自: 111.254.179.115 (07/22 00:33)
3F:→ guardlan:DB栏位设定唯一值然後利用insert on duplicate update 07/22 00:42
GOOGLE後发现on duplicate update这方法好像适用在MYSQL
但我是用MSSQL >_<
4F:→ cleanwind:楼上的方法也可以试试看,或许更好! 07/22 00:44
5F:推 cleanwind:你的 func 是 mysql 的耶 ... 07/22 00:51
看到了...呃 我太迷糊了
之前都在玩MYSQL平台
现在资料是写在MSSQL内(没想到居然没错误!?)
※ 编辑: Boston 来自: 111.254.179.115 (07/22 00:56)
6F:→ arrack:SQL 已经判断一次了 只要判断有没有资料就好了 07/22 12:28