Как запустить sql-запрос внутри цикла while

#php

#php

Вопрос:

у меня есть две базы данных, и мне нужно извлечь их в массив, а также посчитать количество одной строки, но когда я помещаю второй запрос внутрь цикла while, он вообще не работает, и когда я запускаю его вне цикла, то выдает мне только количество последней пасеки, моей 1db:

 apiary_id , apiary_name 
1              A
2              B
3              c
4              d
  

мои 2 дб:

   hive_id, hive_number, apiary_id
    1              01         1
    2              02         2
    3              02         1
    4              04         2
    5              05         4
  

мой php-код:

 <?php
include 'db/db_connect.php';
//Query to select apiary id and apiary name
$query = "SELECT apiary_id, apiary_name, FROM apiaries";
$result = array();
$apiaryArray = array();
$response = array();
//Prepare the query
if($stmt = $con->prepare($query)){
    $stmt->execute();
    //Bind the fetched data to $apiaryId and $apiaryName
    $stmt->bind_result($apiaryId,$apiaryName);
    //Fetch 1 row at a time 
    while($stmt->fetch()){

        //Populate the apiary array
        $apiaryArray["apiary_id"] = $apiaryId;
        $apiaryArray["apiary_name"] = $apiaryName;
        $count = mysqli_num_rows(mysqli_query($con, "SELECT hive_id FROM hives WHERE hives.apiary_id".$apiaryId));
        $apiaryArray["hive_count"] = $count;
        $result[]=$apiaryArray;
    }
    $stmt->close();
    $response["success"] = 1;
    $response["data"] = $result;
}else{
    //Some error while fetching data
    $response["success"] = 0;
    $response["message"] = mysqli_error($con);
}
//Display JSON response
echo json_encode($response);

?>
  

мне нужен результат, подобный этому:

    Apiary ID - Apiary Name - Count of Hives
    1              A               2
    2              B               2
    3              c               0
    4              d               1
  

я буду рад, если кто-нибудь мне поможет.

Комментарии:

1. Я вижу множество проблем с вашим кодом. Моим советом было бы попытаться свести вашу логику к одному запросу, что выглядит возможным, по крайней мере, на первый взгляд.

2. результат будет в массиве json, верно?

3. -Нэнси Мури Да

4. Тим Бигелайзен, можно ли мне помочь lite??

5. Оставайтесь на месте, я работаю над этим

Ответ №1:

У вас опечатка,

 hives.apiary_id =1".$apiaryId 
  

должно быть

 hives.apiary_id =".$apiaryId
  

Итак, весь оператор должен быть,

 $count = mysqli_num_rows(mysqli_query($con, "SELECT count(*) FROM hives WHERE hives.apiary_id =".$apiaryId));
  

Комментарии:

1. спасибо, я исправил, но проблема та же. когда я удаляю второй запрос php, это работает, но когда я пишу внутри цикла while, это не работает