【发布时间】:2016-08-26 09:17:14
【问题描述】:
我正在尝试使这段代码工作,但它只能在第二个 echo 语句 echo "Finished 2"; 之前工作。
<?php
if (count($_GET) > 0){
$sql = "SELECT * FROM winery WHERE winery_name='".$_GET['winery_name']."'";
echo "Finished 1";
$result = $db->query($sql);
echo "Finished 2";
$sql = "SELECT * FROM".$result."WHERE wine_type='".$_GET['wine_type']."'";
echo "Finished 3";
$result = $db->query($sql);
echo "Finished 4";
$sql = "SELECT * FROM".$result.", wine_variety WHERE wine_id=wine_variety.wine_id";
echo "Finished 5";
$result = $db->query($sql);
echo "Finished 6";
$sql = "SELECT * FROM".$result."WHERE variety_id='".$_GET['grape_variety']."'";
echo "Finished 7";
$result = $db->query($sql);
echo "Finished all queries";
}
?>
据我了解的问题是sql不将$result识别为表,但$result存储了我查询的返回表。如何让 SQL 在新查询中使用来自$result 的返回表?
【问题讨论】:
-
从您的 DB 类中查看
query()方法代码会很有用 -
我正在使用 mysqli。我没有定义 query()。
-
我认为您错过了
$result的要点。 -
在这种情况下,
$result是一个MYSQLI::Result对象。您必须从该结果集中读取要使用的任何列,您不能只使用 $result,因为您使用SELECT *将返回多个列 -
我知道在 sql 中可能无法做到这一点——在下一个查询中使用返回表。我只使用过关系代数,它在纸上有效,所以我想我必须加入表并在 sql 中创建一个新表并将其用于新查询?