$sql = "SELECT 'x' FROM `pro_hit_week` WHERE `proId` = ".$val['id']." LIMIT 1";
$exist = $dbStat->get($sql);
if ($exist) {
$sql = "UPDATE `pro_hit_week` SET `pv` = `pv` + ".$val['pv']." 
 WHERE `proId` = '".$val['id']."' LIMIT 1";
} else {
$sql = "INSERT INTO `pro_hit_week` SET `proId` = '".$val['id']."',
 `pv` = '".$val['pv']."'";
}

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2010-08-23 14:58:12 编辑
      

  2.   

    我测试了pro_hit_week表里,假设proId是主键replace into 在数据表里这个主键数据不存在的情况下,`pv` = `pv` + ".$val['pv']."  pv=pv字段的默认值+val['pv']谢谢您
      

  3.   

    这种叠加值的需求,replace into语句也是不行的,因为replace into也只是先delete后insert.
    'replace into `pro_hit_week` set pv=pv+1,pv="123"'这样的语句每次执行,pv字段都只是1,而不是原先的值+1.
    貌似没有比LZ更加好的办法。
      

  4.   

    一定要在一个语句里搞定,否则太亏了 :)
    $sql = "INSERT INTO `pro_hit_week` (`proId`,`pv`) VALUES('$val['id']','$val['pv']') ON DUPLICATE KEY UPDATE `pv`=`pv`+$val['pv']";
    ————————————————————————————————
    勋章啊……我啥时候也能得到这些……
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)