Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 存储查询结果并在另一个查询中使用_Php_Mysql - Fatal编程技术网

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

Php 存储查询结果并在另一个查询中使用,php,mysql,Php,Mysql,我试图存储一个查询$sql的结果,并在第二个查询$sql1中使用此结果 $sql选择列clear中的值,并应将其存储在$result中 $sql1应更新从$sql找到的列,并将该列的值切换为非$result布尔列 我之所以需要这样做,是因为我正在更新的列取决于column clear的值,它包含各种列的名称。这些列也都在同一个表中 <?php $userIdentity = $_SESSION['userIdentity']; $sql = "SELECT clear FROM Use

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

$sql选择列clear中的值,并应将其存储在$result中

$sql1应更新从$sql找到的列,并将该列的值切换为非$result布尔列

我之所以需要这样做,是因为我正在更新的列取决于column clear的值,它包含各种列的名称。这些列也都在同一个表中

<?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是什么类型的对象。谢谢!它就像一个符咒。同样感谢您的警告,我也将实现这些