gpt4 book ai didi

php - 存储查询结果并在另一个查询中使用

转载 作者:行者123 更新时间:2023-11-29 21:39:14 25 4
gpt4 key购买 nike

我试图存储一个查询 $sql 的结果,并在第二个查询 $sql1 中使用该结果。

$sql 选择清除列中的值,并将其存储在 $result 中。

$sql1 应该更新从 $sql 找到的列,并将该列的值切换为 NOT $result, bool 列。

我需要这个的原因是因为我正在更新的列取决于列清除的值,其中包含各个列的名称。这些列也都在同一个表中。

<?php

$userIdentity = $_SESSION['userIdentity'];

$sql = "SELECT clear FROM UserInfo WHERE userIdentity = '$userIdentity'";

$result = $dbc->query($sql);

$sql1 ="UPDATE UserInfo SET $result = NOT $result WHERE userIdentity = '$userIdentity'";

$result1 = $dbc->query($sql1);

?>

最佳答案

由于$dbc是一个mysqli对象,mysqli::query()返回 mysqli_result成功查询时的对象。这意味着 $result 不会是您期望的单一值;相反,它将是一个代表对查询的整个响应的对象。

您将需要执行类似的操作来实际获取 clear 列的值:

$result = $dbc->query($sql);
$row = $result->fetch_object(); //get the first row from the result
$clear = $row->clear;

然后,您可以在第二个查询中使用 $clear 更新数据库。 (您无法轻松地在一个查询中执行此操作,因为您要修改的列取决于数据库中一行的值。完全在一个查询中执行此操作可能是可能的,但可能也比其值(value)更麻烦。)

注意事项:

  • 如果查询未返回任何行,则 $row 将为 null。因此您需要检查这一点。
  • 请注意,通过将 $clear$userIdentity 直接传递到 SQL 查询中,您确实存在潜在的 SQL 注入(inject)漏洞。对于 $userIdentity,您应该使用参数化查询(这意味着您不能使用 mysqli::query();有关如何执行此操作的示例,请参阅 mysqli::prepare )。由于 $clear 用作列名称,并且您无法参数化列名称,因此您需要格外小心以确保其有效。

关于php - 存储查询结果并在另一个查询中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34671862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com