выводить две таблицы из базы данных за один раз

0

это мой код для эха одной таблицы. кто-нибудь может сказать, как эхо две таблицы в одном и том же дБ?

<?php
include 'dbconfig.php';

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

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

if ($result->num_rows >0) {
    // output data of each row
    while($row[] = $result->fetch_assoc()) {

        $tem = $row;

        $json = json_encode($tem);
    }
} else {
    echo "0 results";
}
echo $json;
$conn->close();
Теги:

3 ответа

0
Лучший ответ
<?php
include 'dbconfig.php';

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
 die("Connection failed: " . $conn->connect_error);
 } 

 $sql = "SELECT * FROM t1";
 $sql_1 = "SELECT * FROM t2";


  $result = $conn->query($sql);
  $result_1 = $conn->query($sql_1);

  if ($result->num_rows >0) {
  // output data of each row
  while($row[] = $result->fetch_assoc()) {
  $tem = $row;
  $json = json_encode($tem);
  $a1 = rtrim($json , ']');

  }
  } else {
  echo "0 results";
  }

 if ($result_1->num_rows >0) {
  // output data of each row
  while($row_1[] = $result_1->fetch_assoc()) {

  $tem_1 = $row_1;

  $json_1 = json_encode($tem_1);

  $a2 = ltrim($json_1 , '[');

  } 

 } else {
 echo "0 results";
 }

 echo $a1 , ',' ;
 echo $a2 ;
 $conn->close();
 ?>
1

Вы издаете только один ряд, верно? Проблема в том, что вы перезаписываете $json снова и снова для каждой строки. Это должно работать лучше:

<?php
// as before

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

$rows = array();

while($row[] = $result->fetch_assoc()) {
    $rows[] = $row;
}

echo json_encode($rows);
  • 0
    Я бы просто предложил поставить скобки на петле. Вы не получаете производительности, если не обращаете на них внимания и открываете свой код до ошибок, потому что, если вы забудете добавить их, когда в цикл добавится больше логики, если не будет выполняться правильно.
0

Кажется, вы спрашиваете о 2 таблицах, поэтому я предполагаю, что вам нужен другой запрос для запуска, а затем также выдать некоторые json.

Поскольку json повторяется, я предполагаю, что это может быть через вызов ajax, который вы не можете повторить дважды.

Если эти предположения верны, и в буквах нет никакой дополнительной обработки в строке, тогда как циклы, тогда самый прямой способ сделать то, что вы просите, - это fetch_all() и другой запрос:

<?php
include 'dbconfig.php';

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

//Table1 query and fetch_all give an array back
$sql = "SELECT * FROM table1";
$result = $conn->query($sql);
$table1 = $result->fetch_all();

//Table2 and fetch_all give an array back
$sql = "SELECT * FROM table2";
$result = $conn->query($sql);
$table2 = $result->fetch_all();

//Send json of both in one line
echo $json_encode(array($table1,$table2));

//Check on other side if it is empty. That is more view related.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню