PHP Mysql:选择列并使用新值添加最后一个当前值

时间:2017-02-27 06:02:36

标签: php mysql select insert

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

$结果我没有回报。

例如:最后一个值= 100,值5 = 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 )";

6 个答案:

答案 0 :(得分: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()函数将结果行作为关联数组提取。

答案 1 :(得分:0)

您使用的是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

答案 2 :(得分:0)

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

<强>的用途: -

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

For more reference

答案 3 :(得分:0)

此处,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);

答案 4 :(得分:0)

如果您需要使用某个N号更新specific_column,请尝试此操作

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

所以$value5 =50然后specific_column将是100 + 50

答案 5 :(得分:0)

$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 )";