Как запустить два или более запроса в текстовом поле автозаполнения в php?

код:

<?php
    session_start;
    include('config.php'); 
    $student_id = $_SESSION['student_id'];

    $searchTerm = $_GET['term'];
    $query = "SELECT company_name FROM company WHERE company LIKE '%".$searchTerm."%' ORDER BY company_name ASC";
    $query .= "SELECT key_skills FROM skill_master WHERE key_skills LIKE '%".$searchTerm."%' ORDER BY key_skills ASC";
    $result = mysqli_multi_query($con,$query);
    while($row = mysqli_fetch_assoc($result)) 
    {
        $data[] = $row['company_name'];
        $data[] = $row['key_skills'];
    }
    echo json_encode($data);
?>

Я использую окно предложения автозаполнения, когда я использую один запрос в приведенном выше коде, он отлично работает и показывает мне результат, но теперь я хочу запустить два запроса, чтобы получить разные данные в одном поле автозаполнения, но когда я запускаю этот файл, он показывает мне "null " выход. Итак, как мне исправить и получить две разные данные таблицы в одном поле? Пожалуйста, помогите мне.

Спасибо

Что происходит? Вы получаете ошибки? Вы смотрели журнал ошибок PHP?

RiggsFolly 16.05.2018 13:28

Возможная проблема. У вас нет ; между двумя запросами. Внутри строки то есть. то есть ORDER BY company_name ASC;";

RiggsFolly 16.05.2018 13:29

Я стараюсь, как вы говорите, но такая же проблема @RiggsFolly

omkara 16.05.2018 13:30

Но мы все еще не знаем, в чем проблема. Нам нужны сообщения об ошибках

RiggsFolly 16.05.2018 13:31

Вам также нужно прочтите руководство по мультизапросу, вы фактически не переходите от первого результата ко второму. Есть некоторые другие функции, которые необходимо вызвать для просмотра нескольких результатов.

RiggsFolly 16.05.2018 13:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
30
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это,

$query = "SELECT company_name FROM company WHERE company LIKE '%".$searchTerm."%' ORDER BY company_name ASC 
          UNION 
          SELECT key_skills FROM skill_master WHERE key_skills LIKE '%".$searchTerm."%' ORDER BY key_skills ASC";

Зачем ОП попробуй это? У Хорошие ответы всегда будет объяснение того, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO, которые могут найти этот вопрос и прочитать ваш ответ.

RiggsFolly 16.05.2018 13:35

Вы точно знаете, что company_name и key_skills имеют один и тот же тип данных?

RiggsFolly 16.05.2018 13:36

@RiggsFolly - Я согласен, что хорошие ответы всегда имеют объяснение, но это прямой вопрос. Можем ли мы выполнить 2 запроса одновременно? Да мы можем. Вот что я дал в ответ. По поводу типов. Почему это имеет значение ? Разве мы не можем проверить тип в цикле while, а затем присвоить значения соответствующим образом?

Kishen Nagaraju 16.05.2018 13:50

UNIONS должны возвращать один и тот же тип данных для каждого столбца в обоих запросах.

RiggsFolly 16.05.2018 14:28
Ответ принят как подходящий

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

Попробуй это:

<?php
    session_start();
    include('config.php'); 
    $student_id = $_SESSION['student_id'];
    $data = array();

    $searchTerm = $_GET['term'];
    $query = "SELECT company_name FROM company WHERE company LIKE '%".$searchTerm."%' ORDER BY company_name ASC;";
    $query .= "SELECT key_skills FROM skill_master WHERE key_skills LIKE '%".$searchTerm."%' ORDER BY key_skills ASC;";

    mysqli_multi_query($con,$query);
    $result = mysqli_store_result($con);

    while($row = mysqli_fetch_assoc($result)) 
    {
        $data[] = $row['company_name'];
    }

    mysqli_free_result($result);
    mysqli_next_result($con);

    $result = mysqli_store_result($con);

    while ($row = mysqli_fetch_assoc($result)) {
        $data[] = $row['key_skills'];
    }       

    mysqli_free_result($result);
    mysqli_close($con);
    echo json_encode($data);
?>

Спасибо, дружище @Karlo Kokkak

omkara 16.05.2018 13:54

Другие вопросы по теме