Php 存储查询结果并在另一个查询中使用
我试图存储一个查询$sql的结果,并在第二个查询$sql1中使用此结果 $sql选择列clear中的值,并应将其存储在$result中 $sql1应更新从$sql找到的列,并将该列的值切换为非$result布尔列 我之所以需要这样做,是因为我正在更新的列取决于column clear的值,它包含各种列的名称。这些列也都在同一个表中Php 存储查询结果并在另一个查询中使用,php,mysql,Php,Mysql,我试图存储一个查询$sql的结果,并在第二个查询$sql1中使用此结果 $sql选择列clear中的值,并应将其存储在$result中 $sql1应更新从$sql找到的列,并将该列的值切换为非$result布尔列 我之所以需要这样做,是因为我正在更新的列取决于column clear的值,它包含各种列的名称。这些列也都在同一个表中 <?php $userIdentity = $_SESSION['userIdentity']; $sql = "SELECT clear FROM Use
<?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
对象,因此在成功查询时返回一个对象。这意味着,$result
不是您期望的单一值;相反,它将是一个表示查询的整个响应的对象
您需要执行类似的操作以实际获取clear
列的值:
$result = $dbc->query($sql);
$row = $result->fetch_object(); //get the first row from the result
$clear = $row->clear;
然后,您可以在第二次查询中使用$clear
更新数据库。(在一个查询中很难做到这一点,因为要修改的列取决于数据库中某一行的值。在一个查询中完全做到这一点可能是可能的,但也可能会带来更多麻烦。)
注意事项:
- 如果查询不返回行,$row将为空。所以你需要检查一下
- 请注意,通过将
$clear
和$userIdentity
直接传递到SQL查询中,确实存在潜在的SQL注入漏洞。对于$userIdentity
,您应该使用参数化查询(这意味着您不能使用mysqli::query()
;有关如何执行此操作的示例,请参阅)。由于$clear
用作列名,并且您不能参数化列名,因此需要格外小心以确保它有效
对第一个结果进行预测。。并获取要更新的值。否。只需使用1个查询$dbc是多少?这是PDO对象吗?$dbc用于连接到单独文件中的数据库。是的,但它是什么?你是如何创造它的?答案将取决于$dbc是什么类型的对象。谢谢!它就像一个符咒。同样感谢您的警告,我也将实现这些