在查询中使用查询,但查询变为null

时间:2016-07-31 19:41:38

标签: php mysql

所以我想从我的数据库中的表中选择数据,并希望在其他选择查询中使用该数据,我尝试但我的上一个查询变为空,那么我错了什么?

$query = "SELECT * FROM `DBovervieuw` WHERE owner =" . $owner;
$result_set = mysqli_query($connection, $query);
while($result = mysqli_fetch_array($result_set)) {
    $stmt = "SELECT * FROM `card` WHERE DBid=" . $result['ID'];
    $Finale_set = mysqli_query($connection, $Finale_set);
    while($row = mysqli_fetch_ASSOC($Finale_set)) {
        $data[] = $row;
    }

}
echo json_encode($data);

我稍后会做我的BIND变量

2 个答案:

答案 0 :(得分:2)

嗨,你遗漏的主要内容是第二个WHERE(更新......实际上都是查询)

 $query = "SELECT * FROM `DBovervieuw` WHERE " . $owner;

 $stmt = "SELECT * FROM `card` WHERE " . $result['ID'];

您没有列名。那么在哪里?

  $query = "SELECT * FROM `DBovervieuw` WHERE {insert column name here } = " . $owner;

如果$owner是一个值为1的id,那么您有这个查询..

  $query = "SELECT * FROM `DBovervieuw` WHERE 1"

这将只返回表格中的所有记录。

那里说一个简单的连接可能更适合这里,然后是2个查询

 $query = "SELECT
               d.*, c.*
           FROM
               `DBovervieuw` AS d
           JOIN
               card AS c
           ON
               d.ID = c.DBid
           WHERE d.owner = " . $owner;

在不知道我能做的最好的那些列名称的情况下...基本上不是第二次使用该关系作为联接中的ON。然后你可以为DB保存一堆查询调用,它可以使代码更简单,更简单,因为你手头有所有数据,并且可以避免第二个(嵌套)while循环。

<强>更新 这也是一个问题。

  $stmt = "SELECT * FROM `card` WHERE DBid=" . $result['ID'];
  $Finale_set = mysqli_query($connection, $Finale_set);

我想你想要这个:

  $stmt = "SELECT * FROM `card` WHERE DBid=" . $result['ID'];
  $Finale_set = mysqli_query($connection, $stmt);  //<-----

顺便说一下,负责空查询错误,因为在定义它之前使用了$Finale_set。哪个是NULL作为您的SQL,从而为您提供空查询错误。虽然这是一个错误的变量,所以我们只使用正确的变量而不是定义它。

干杯。

作为旁注,$stmt变量通常在使用PDO时使用,它代表PDOstatement http://php.net/manual/en/class.pdostatement.php所以按惯例,我会简单地将其更改为{{1} }。但这只是一种最佳实践。

答案 1 :(得分:0)

我认为你在一两行中有一定的拼写错误:

这里

$query = "SELECT * FROM DBovervieuw' WHERE " . $owner;

在这里

$stmt = "SELECT * FROM 'card' WHERE " . $result['ID'];

尝试这样的事情:

<强> EDITED

$query = "SELECT * FROM DBovervieuw WHERE owner='".$owner."'";
$result_set = mysqli_query($connection, $query);
while($result = mysqli_fetch_array($result_set)) {
    $stmt = "SELECT * FROM `card` WHERE DBid=" . $result['ID'];
    $Finale_set = mysqli_query($connection, $stmt);
    while($row = mysqli_fetch_ASSOC($Finale_set)) {
        $data[] = $row;
    }
}
echo json_encode($data);

请注意Owner_id&amp; Card_id。这两个是您要搜索的相应表格的列名称。您必须使用真实的列名更改这两个列。