简体   繁体   English

SQL查询PHP中的SQL查询

[英]SQL Query in SQL Query PHP

I'm trying to make an listview for my website. 我正在尝试为我的网站建立一个列表视图。 I tried to make this so I have more overview then only a long list with all the data. 我试图做到这一点,所以我有更多的概述,然后只有一长串所有数据。

$conn = new mysqli($db_servername, $db_username, $db_password, $db_dbname);
if ($conn->connect_error) { } 

$sql = "SELECT * FROM Home_Rooms";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

    echo "
<div class=\"container\"><hr></div>
<div class=\"container-fluid\">
  <div class=\"row\">
    <div class=\"col-sm-1\">
    </div>
    <div class=\"col-sm-10\">
      <div class=\"panel-group\" id=\"accordion\">";

    while($row = $result->fetch_assoc()) {
        $room = $row["name"];
        echo "
        <div class=\"panel panel-info\">
          <div class=\"panel-heading\">
            <h4 class=\"panel-title\"><a data-toggle=\"collapse\" data-parent=\"#accordion\" href=\"#collapse" .$row["id"]."\">" .$row["name"]."</a></h4>
          </div>
          <div id=\"collapse" .$row["id"]."\" class=\"panel-collapse collapse\">
          <div class=\"panel-body\">";

$conn = new mysqli($db_servername, $db_username, $db_password, $db_dbname);
if ($conn->connect_error) { } 

$sql = "SELECT * FROM Home_Devices WHERE room='$room'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row_room = $result->fetch_assoc()) {
        echo "
      <div class=\"media\">
        <div class=\"media-left\">
          <img src=\"/image/pictures/" .$row_room["type"].".png\" class=\"media-object\" style=\"width:60px\">
        </div>
        <div class=\"media-body\">
          <h4 class=\"media-heading\"><a href=\"/dashboard/" .$row_room["sensor_id"]."\">" .$row_room["room"]." - " .$row_room["name"]."</a></h4>
          <p>Sensor ID: " .$row_room["sensor_id"]."</p>
        </div>
      </div>";
    }
} else {
    echo "<p>No devices found, you can add devices <a href=\"/settings\">here</a>.</p>";
}

      echo"</div>
          </div>
        </div>";
    }

    echo "
      </div>
    </div>
  </div>
</div>";

} else {
    echo "<p>No rooms found, you can add rooms <a href=\"/settings\">here</a>.</p>";
}
$conn->close();

But this didn't load all the rooms, only the first room. 但这并没有加载所有房间,只有第一个房间。 Could someone help me fix this? 有人可以帮我解决这个问题吗? Is this even possible or am I doing something wrong? 这是否有可能或者我做错了什么?

You shouldn't have to define $conn inside your while statement. 您不必在while语句中定义$ conn。 It's already defined at the start of the code. 它已经在代码开头定义。 Also, why are you using the same variable $result for the room data, same as your Home_Rooms? 另外,为什么要为房间数据使用与Home_Rooms相同的变量$ result? Try using a different variable the second time around, cause it's probably screwing up your while statement. 第二次尝试使用其他变量,因为它可能会使while语句搞砸。

Your Result variable is Overwrite 您的Result变量为Overwrite

Change that variable. 更改该变量。

$sql1 = "SELECT * FROM Home_Devices WHERE room='$room'";
$result1 = $conn->query($sql1);

and change respective variables. 并更改各个变量。

Thanks 谢谢

I have it working, 我有工作

I had to change all the arrays different. 我不得不更改所有不同的数组。

$conn = new mysqli($db_servername, $db_username, $db_password, $db_dbname);
if ($conn->connect_error) { } 

$sql = "SELECT * FROM Home_Rooms";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

    echo "
<div class=\"container\"><hr></div>
<div class=\"container-fluid\">
  <div class=\"row\">
    <div class=\"col-sm-1\">
    </div>
    <div class=\"col-sm-10\">
      <div class=\"panel-group\" id=\"accordion\">";

    while($row = $result->fetch_assoc()) {
        $room = $row["name"];
        echo "
        <div class=\"panel panel-info\">
          <div class=\"panel-heading\">
            <h4 class=\"panel-title\"><a data-toggle=\"collapse\" data-parent=\"#accordion\" href=\"#collapse" .$row["id"]."\">" .$row["name"]."</a></h4>
          </div>
          <div id=\"collapse" .$row["id"]."\" class=\"panel-collapse collapse\">
          <div class=\"panel-body\">";

$conn_2 = new mysqli($db_servername, $db_username, $db_password, $db_dbname);
if ($conn_2->connect_error) { } 

$sql_2 = "SELECT * FROM Home_Devices WHERE room='$room'";
$result_2 = $conn_2->query($sql_2);

if ($result_2->num_rows > 0) {
    while($row_room = $result_2->fetch_assoc()) {
        echo "
      <div class=\"media\">
        <div class=\"media-left\">
          <img src=\"/image/pictures/" .$row_room["type"].".png\" class=\"media-object\" style=\"width:60px\">
        </div>
        <div class=\"media-body\">
          <h4 class=\"media-heading\"><a href=\"/dashboard/" .$row_room["sensor_id"]."\">" .$row_room["room"]." - " .$row_room["name"]."</a></h4>
          <p>Sensor ID: " .$row_room["sensor_id"]."</p>
        </div>
      </div>";
    }
} else {
    echo "<p>No devices found, you can add devices <a href=\"/settings\">here</a>.</p>";
}

      echo"</div>
          </div>
        </div>";
    }

    echo "
      </div>
    </div>
  </div>
</div>";

} else {
    echo "<p>No rooms found, you can add rooms <a href=\"/settings\">here</a>.</p>";
}
$conn->close();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM