我试图用我提取的数据更新mysql数据库。 (顺便说一下,我需要为特定的单个项目执行此操作,但这不是问题。)当涉及为获取或更新创建单独的语句时,我可以这样做。另外,我能够获取这样的数据:
$query = "SELECT starting_amount FROM comp ORDER BY item DESC LIMIT 3, 1";
$result = $conn->query($query);
$row = mysqli_fetch_assoc($result);
我可以像这样更新数据:
$sql = "UPDATE comp SET final_amount=25 WHERE item='Y'";
但是我不能把两者放在一起(我试过几种方法但都失败了)。换句话说,我能够使用我手动输入的数据更新表记录,例如我输入" 25"在update语句中手动操作,在此示例中是来自&stans_amount'的数据,但我不知道如何使用将自动使用从表中提取的数据的语句进行更新。换句话说,我如何编写更新语句以便" SET final_amount ="接下来是获取数据?在此先感谢您的帮助!
答案 0 :(得分:0)
因此,您只需将获取的数据传递给查询
$starting_amount = $row['starting_amount'];
$sql = "UPDATE comp SET final_amount=$starting_amount WHERE item='Y'";
答案 1 :(得分:0)
首先,我强烈建议您查看预准备语句 - 使用预准备语句插入数据是一种防止SQL注入攻击的简单方法,也可以使您想要做的事情变得更容易。
以下是基于您的示例使用mysqli准备的更新语句的示例:
$statement = $conn->prepare("UPDATE comp SET final_amount=? WHERE item='Y'")
$statement->bind_param(25);
我假设您只想使用结果集的第一行。
使用上面的示例,您可以将bind_param中的值替换为行中的值。
$statement->bind_param($row['starting_amount']);
答案 2 :(得分:0)
由于您可以在UPDATE
中加入查询,因此无需将它们作为单独的语句执行。
UPDATE comp AS c1
JOIN (SELECT starting_amount
FROM comp
ORDER BY item DESC
LIMIT 3, 1) AS c2
SET c1.final_amount = c2.starting_amount
WHERE c1.item = 'Y'