我正在尝试使用新值从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 )";
答案 0 :(得分:1)
$result
是mysqli
对象。您无法直接获取列值。您需要首先获取行值..
$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)的列值时,请使用此函数。
答案 3 :(得分:0)
此处,LAST_INSERT_ID不会返回任何内容
由于LAST_INSERT_ID()返回BIGINT UNSIGNED(64位)值 成功表示第一个自动生成的值 作为最近执行的INSERT语句的结果,为AUTO_INCREMENT列插入。 LAST_INSERT_ID()的值 如果没有成功插入行,则保持不变。
因此,您可以使用MAX
$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 )";