Как mysqli_fetch_row при использовании mysqli_multi_query

0

Я пытаюсь получить последнюю информацию о каком-то конкретном человеке, и я использую такой запрос, как

SELECT * FROM Table WHERE Name LIKE 'Peter' ORDER BY ID DESC LIMIT 1

а также

SELECT * FROM Table WHERE Name LIKE 'Mary' ORDER BY ID DESC LIMIT 1

потому что в таблице каждый день будут вставлять новые данные для другого человека в момент его обновления (для записи справки), поэтому я хотел бы распечатать несколько последних сведений о последних событиях с помощью "ORDER BY ID DESC LIMIT 1",

Я попытался распечатать его с помощью "mysqli_multi_query" и "mysqli_fetch_row"

лайк

    $con=mysqli_connect($localhost,$username,$password,'Table');

    $sql = "SELECT * FROM Table WHERE Name LIKE 'Peter' ORDER BY ID 
    DESC LIMIT 1 ";
    $sql .= "SELECT * FROM Table WHERE Name LIKE 'Mary' ORDER BY ID 
    DESC LIMIT 1";

    // Execute multi query
if (mysqli_multi_query($con,$sql))
{
  do
    {
    // Store first result set
    if ($result=mysqli_store_result($con)) {
      // Fetch one and one row
      while ($row=mysqli_fetch_row($result))
        {
            echo '<tr>'; // printing table row
            echo '<td>'.$row[0].'</td>';
            echo '<td>'.$row[1].'</td>';
            echo '<td>'.$row[2].'</td>';
            echo '<td>'.$row[3].'</td>';
            echo '<td>'.$row[4].'</td>';
            echo '<td>'.$row[5].'</td>';
            echo '<td>'.$row[6].'</td>';
            echo '<td>'.$row[7].'</td>';
            echo '<td>'.$row[8].'</td>';
            echo '<td>'.$row[9].'</td>';
            echo '<td>'.$row[10].'</td>';
            echo '<td>'.$row[11].'</td>';
            echo '<td>'.$row[12].'</td>';
            echo '<td>'.$row[13].'</td>';
            echo '<td>'.$row[14].'</td>';
            echo'</tr>'; // closing table row
        }
      // Free result set
      mysqli_free_result($result);
      }
    }
  while (mysqli_next_result($con));
}

mysqli_close($con);

?>

На странице результатов не отображается сообщение об ошибке, но результаты не печатаются. Индивидуальные запросы были протестированы.

Пожалуйста, посоветуйте, большое спасибо

Есть ли другой способ сохранить запрос простым, поэтому нет необходимости использовать mysqli_multi_query?

Теги:
mysqli-multi-query

2 ответа

0
Лучший ответ

Это должно сработать для вас:

$con = mysqli_connect($localhost,$username,$password,'Table');


// Make a simple function
function personInfo($con, $sql)
{
    $result = mysqli_query($con, $sql);
    if(mysqli_num_rows($result) > 0)
    {
        while($row = mysqli_fetch_array($result))
        {
            echo '<table>
                  <tr>';
            for($i=0; $i < count($row); $i++) echo '<td>'.$row[$i].'</td>';
            echo '</tr>
                  </table>';
        }
    }
}


$sql1 = "SELECT * FROM Table WHERE Name='Peter' ORDER BY ID DESC LIMIT 1 ";
$sql2 = "SELECT * FROM Table WHERE Name='Mary' ORDER BY ID DESC LIMIT 1";


// Simply call the function
personInfo($con, $sql1);
personInfo($con, $sql2);
  • 0
    Спасибо, Иван, но я могу распечатать данные только одного человека, как я могу распечатать информацию о другом человеке или даже нескольких человек?
  • 0
    Я отредактировал. Это помогает?
Показать ещё 4 комментария
1

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

По этой причине подходит JOIN-запрос.

SELECT A.* FROM test A INNER JOIN (SELECT name, MAX(id) AS id FROM test GROUP BY name) B ON A.name=B.name AND A.id=B.id WHERE A.name IN ('Peter','Mary')

Это вернет нужные строки в одном запросе в одном наборе результатов, который затем можно будет повторить и отобразить.

Вот демоверсия sqlfiddle: http://sqlfiddle.com/#!9/2ff063/3

Ps Не используйте LIKE, когда вы ищете значения без переменных. Я имею в виду, только использовать его, когда _ или % логически требуется.

  • 0
    Если у вас есть вопросы или проблемы при реализации, пожалуйста, задавайте, но не идите на компромисс по качеству. Я бы лучше отформатировал свой ответ, но я отправляю сообщения со своего телефона.
  • 0
    @NDSAC, похоже, ваш вопрос заброшен. Удовлетворяет ли мой ответ ваш вопрос? Вам нужны какие-либо разъяснения от меня? Вы знаете, как принять ответ?
Показать ещё 1 комментарий

Ещё вопросы

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