为什么用php执行一次下面这个sql
$sql="update `pageview` set `pageview`.`view`=`pageview`.`view`+1 where `pageview`.`id`=".$id;
但被改的字段view的值先加1,过了几秒又加1
也就是一共加了2感觉好像sql被执行了两次,但我确信程序只执行了一次,而且是过几秒后view的值又加了1但直接用mysql的客户端用命令行执行就不会这样...使用的是php5 mysql5 连接是mysqli

解决方案 »

  1.   

    你的执行函数是什么样子的?拿出来看看,sql语句没有问题
      

  2.   

    public function updateTodayView($id){
    $sql="update `pageview` set `pageview`.`view`=`pageview`.`view`+1 where `pageview`.`id`=".$id;
    global $db;
    $db->query($sql);
    }$db是在前面定义的,定义如下:
     $db = new mysqli($HOST,$USER,$PASSWORD,$DBNAME);
     $db->query("SET NAMES 'gbk';");另外mysql是mysql5,表类型是innodb
      

  3.   

    sql这么写,也试过,一样的结果:
    $sql="update pageview set view=view+1 where id=".$id;
      

  4.   

    你把你的$db贴出来吧看来是你的$db有问题了。这个我没有办法帮你解决了。肯定是在$fb中,执行了两次造成的。
      

  5.   

    建议对class不进行全局变量操作。这样并不好,不如使用一次创建一次来的方便呢
      

  6.   

    $db定义如下:
     $db = new mysqli($HOST,$USER,$PASSWORD,$DBNAME);
     $db->query("SET NAMES 'gbk';");是mysqli内置的一个db object啊
      

  7.   

    应该是没有执行两次,因为我把$sql echo出来,只打印一次。老兄,你说会是什么问题呢
      

  8.   

    不用class,直接执行,也是这个结果,class里用global主要是为了方便