代码之家  ›  专栏  ›  技术社区  ›  ganjan

如何使用MySQL更新查询(PHP)增加值

  •  4
  • ganjan  · 技术社区  · 14 年前

    我有一个查询如下所示:

    $sql = "UPDATE tbl SET amt_field='amt_field+1' WHERE username='" .mysql_real_escape_string($_SESSION['username']). "'";
            mysql_select_db('db',$con);
            mysql_query($sql,$con);
    

    我想尽可能容易地增加这个值。

    我已经尝试过:

    "UPDATE tbl SET amt_field='amt_field+1' WHERE
    
    "UPDATE tbl SET amt_field='amt_field' + 1 WHERE
    
    "UPDATE tbl SET amt_field='amt_field++' WHERE
    

    我没有收到错误消息,但数据库中的值也不会增加。

    2 回复  |  直到 8 年前
        1
  •  8
  •   Artefacto    14 年前
    UPDATE tbl SET amt_field = amt_field + 1 WHERE ...
    

    如果使用单引号 ' ,您告诉所附的值被解释为一个字符串,您可能在考虑刻度线。这也是有效的:

    UPDATE tbl SET `amt_field` = `amt_field` + 1 WHERE ...
    

    当列(或表等)具有保留名称时,必须使用此选项。

        2
  •  0
  •   Derek Brazil    8 年前

    你好,你初始化了一个新的会话吗?下面对我来说非常有用。

      public static function insert_search($pdo)
      {
        @session_start();
        $ip = $_SERVER['REMOTE_ADDR'];
        $username = $_SESSION['username'];
        //$username = self::username();
        $date = date('Y-m-d');
        //Adding the total searches for the logged in user 
        $query = $pdo->query("UPDATE  `users` SET  `total_searches` = `total_searches` +1 WHERE username = '$username'");
      }
    
    /* What you could potentially do is the following.
    Make sure if you're doing it the procedural way
    you put @session_start(); at the top of the page */
    
    @session_start();
    $sql = "UPDATE tbl SET amt_field ='amt_field' +1 WHERE username ='" .mysql_real_escape_string($_SESSION['username']). "'";
            mysql_select_db('db',$con);
            mysql_query($sql,$con);