【问题标题】:PHP Mysql: Select column and add last current value with a new onePHP Mysql:选择列并用新值添加最后一个当前值
【发布时间】:2017-02-27 06:02:35
【问题描述】:

我正在尝试使用新值添加 mysql 中特定列的最后一个值。

$result 什么也没给我。

例如:最后一个值=100,value5=50,新值应该是 150。

        // Read values into table.
        $sql = "SELECT specific_column FROM data WHERE id=LAST_INSERT_ID()";
        $result = mysqli_query($conn, $sql);

        // Insert values into table.
        $sql = "INSERT INTO data (column1, column2, column3, column4, specific_colum)
        VALUES ($value1, $value2, $value3, $value4, $result+$value5 )";

【问题讨论】:

    标签: php mysql select insert


    【解决方案1】:

    $resultmysqli 对象。你不能直接获取列值。你需要像这样先获取行值..

    $row = mysqli_fetch_assoc($result);
    $last_value = $row['specific_column'];
    $update_value = $last_value+$value5;//now update $update_value in database
    

    mysqli_fetch_assoc() 函数获取结果行作为关联数组。

    【讨论】:

    • 你必须在插入后尝试这个。否则 last_insert_id() 将为 NULL。而 NULL+something 始终为 NULL。
    【解决方案2】:

    你在使用 MysQLi 吗?

    你试过了吗:

    $sql = "INSERT INTO ....";
    
    if ($conn->query($sql) === TRUE) {
        $last_id = $conn->insert_id;
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    

    或者:

    if (mysqli_query($conn, $sql)) {
        $last_id = mysqli_insert_id($conn);
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
    

    然后根据需要使用 $last_id

    【讨论】:

      【解决方案3】:

      LAST_INSERT_ID() 不返回您在行中插入的任何值。但它只返回您以 0、1、2 等形式插入或更新的 ROW ID 或 返回上一个 INSERT 或 UPDATE 语句为 AUTO_INCREMENT 列生成的值。

      用途:-

      在对包含 AUTO_INCREMENT 字段的表执行 INSERT 语句,或使用 INSERT 或 UPDATE 设置具有 LAST_INSERT_ID(expr) 的列值后使用此函数。

      For more reference

      【讨论】:

        【解决方案4】:

        在这里,LAST_INSERT_ID 不会返回任何内容

        由于 LAST_INSERT_ID() 返回 BIGINT UNSIGNED(64 位)值 表示成功的第一个自动生成的值 作为最近执行的 INSERT 语句的结果插入 AUTO_INCREMENT 列。 LAST_INSERT_ID() 的值 如果没有成功插入任何行,则保持不变。

        因此,您可以使用 MAX 代替 LAST_INSERT_ID

        $sql = "SELECT specific_column FROM data WHERE id= (select MAX(id) from data)";
        $result = mysqli_query($conn, $sql);
        

        【讨论】:

          【解决方案5】:

          如果您只是需要用某个 N 数字更新 specific_column,那么试试这个

          UPDATE data SET
              specific_column  = @specific_column  := specific_column + $value5
          WHERE ..... ;
          

          所以$value5 =50 那么specific_column 将是 100+50

          【讨论】:

          • @Limehaze 检查一下
          【解决方案6】:
          $sql = "SELECT specific_column FROM data WHERE id= (select MAX(id) from data)";
          $result = mysqli_query($conn, $sql);
          $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
          $sql = "INSERT INTO data (column1, column2, column3, column4, specific_colum)
                  VALUES ($value1, $value2, $value3, $value4, $row['specific_colum']+$value5 )";
          

          【讨论】:

          • 我现在正在尝试您的解决方案,在第 4 行,我收到此错误:解析错误:语法错误,意外 '' (T_ENCAPSED_AND_WHITESPACE),期望 '-' 或标识符 (T_STRING) 或变量 ( T_VARIABLE) 或数字 (T_NUM_STRING)
          • 请添加 '".$value1."' 而不是 $value1
          猜你喜欢
          • 1970-01-01
          • 2021-03-19
          • 2011-05-09
          • 2011-08-28
          • 1970-01-01
          • 2017-12-18
          • 2021-11-23
          • 2021-08-31
          相关资源
          最近更新 更多