Поиск в нескольких таблицах с помощью UNION, но когда ECHO говорит неопределенную переменную - PullRequest
0 голосов
/ 27 сентября 2019

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

Я пробовал много, но не получил именно то, что мне не хватает.

$query = "SELECT a, b, c, id, 'RSpage' as type FROM table1 WHERE sn LIKE '%" .$keyword . "%' OR tgs LIKE '%" .$keyword."%' 
           UNION
           SELECT d, e, f, id, 'RSblog' as type FROM tablblog WHERE keyw LIKE '%" .$keyword. "%' OR art LIKE '%" .$keyword."%' 
           UNION
           SELECT g, h, i, id, 'RStut' as type FROM tabletutor WHERE sanswer LIKE '%" .$keyword. "%' OR skeywords LIKE '%" .$keyword."%'
           UNION
           SELECT j, k, l, id, 'RSpack' as type FROM tablepack WHERE package_keywords LIKE '%" .$keyword. "%' OR short_description LIKE '%" .$keyword."%' LIMIT ".$first_pos.", ".$RESULTS_LIMIT."";

           $sql_result_query = mysqli_query($con_new,$query);
while($row = mysqli_fetch_array($sql_result_query))
{

if($row["type"] == "RSpage")
{                                       
Working fine and printing all value what i want.
}

if($row["type"] == "RSblog")
{
Notice: Undefined index: title in C:\xampp\htdocs\RSSeoSolution\search_new.php on line                                      
}
if($row["type"] == "RStut")
{
Notice: Undefined index: squestion in C:\xampp\htdocs\RSSeoSolution\search_new.php on line                                          }
if($row["type"] == "RSpack")
{
Notice: Undefined index: package_title in C:\xampp\htdocs\RSSeoSolution\search_new.php on line                                          }
                                        }

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

Пожалуйста, помогите мне, потому что это помогает мне сделать одну страницу поиска со всего сайта.

1 Ответ

0 голосов
/ 27 сентября 2019

Имена столбцов, возвращаемые из запроса UNION, задаются первым запросом SELECT, поэтому для ваших последующих запросов имена не соответствуют вашим ожиданиям.Например, для типа RSblog, title называется pg, desc называется sn и purl называется tgs (id остается тем же).То же самое относится к другим SELECT в UNION.Поэтому для $row["type"] == "RSblog" используйте что-то вроде

$title = $row['pg'];
$desc = $row['sn'];
$purl = $row['tgs'];

И аналогично для других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...