4

我有一个看起来像这样的查询:

$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

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

4

2 回答 2

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

如果您使用单引号',则表示将封闭的值解释为字符串您可能正在考虑刻度线。这也是有效的:

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

这必须在列(或表等)具有保留名称时使用。

于 2010-07-25T22:46:49.360 回答
-1

您好,您是否初始化了一个新会话。下面对我来说非常有用。

  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);
于 2017-06-04T17:12:09.617 回答