php mysqli update with fetched

时间:2016-06-08 22:36:24

标签: php mysql mysqli

我试图用我提取的数据更新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 ="接下来是获取数据?在此先感谢您的帮助!

3 个答案:

答案 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'