Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从多个表中选择一个值_Php_Jquery_Mysql - Fatal编程技术网

Php 从多个表中选择一个值

Php 从多个表中选择一个值,php,jquery,mysql,Php,Jquery,Mysql,我已将搜索选项添加到项目中。在这里,当某个特定用户在搜索文本框中输入时,我使用jquery自动完成功能来显示关键字的相关结果 这是我的php脚本 <?php require_once('database.php'); if(isset($_POST['queryString'])) { $queryString = $dbc->real_escape_string($_POST['queryString']); if(strlen($queryString)

我已将搜索选项添加到项目中。在这里,当某个特定用户在搜索文本框中输入时,我使用jquery自动完成功能来显示关键字的相关结果

这是我的php脚本

<?php

require_once('database.php');

if(isset($_POST['queryString'])) {

    $queryString = $dbc->real_escape_string($_POST['queryString']);

    if(strlen($queryString) >0) {
        //$query = $dbc->query("SELECT subjects FROM subject WHERE subjects LIKE '$queryString%' LIMIT 10");
        $q = "SELECT tutor_name FROM tutors WHERE tutor_name LIKE '%$queryString%' LIMIT 10";

        $r = mysqli_query ( $dbc, $q);

        if($q) {
            while ($row = mysqli_fetch_array($r, MYSQL_ASSOC)) {
                echo '<li onClick="fill(\''.$row['tutor_name'].'\');">'.$row['tutor_name'].'</li>';
            }
        } else {
            echo 'ERROR: There was a problem with the query.';
        }
    } else {

    }
} else {
    echo 'There should be no direct access to this script!';
}

?> 

这对我来说很有效。。但我的问题是我需要用键入关键字检查多个表。这里我只用一张桌子。。任何人都可以告诉我如何将其他表附加到此查询

使用
UNION

SELECT keyword 
FROM
(
    SELECT tutor_Name AS keyword FROM tutors
    UNION
    SELECT subject_name AS keyword FROM subjects
    UNION
    SELECT institute_name AS keyword FROM institutes
) s
WHERE keyword LIKE '%$queryString%' 
LIMIT 10
您的查询也容易受到SQL注入的攻击,请阅读下面的文章

使用
UNION

SELECT keyword 
FROM
(
    SELECT tutor_Name AS keyword FROM tutors
    UNION
    SELECT subject_name AS keyword FROM subjects
    UNION
    SELECT institute_name AS keyword FROM institutes
) s
WHERE keyword LIKE '%$queryString%' 
LIMIT 10
您的查询也容易受到SQL注入的攻击,请阅读下面的文章


下面的
查询合并了
返回的三个表
,您可以根据表中的公共列
仅选择表中存在的那些
记录

SELECT tutor_name FROM yourDB
LEFT JOIN tableA ON tutor_name = '%$queryString%'
LEFT JOIN tableB ON tutor_name = '%$queryString%';

希望这对您有用。

下面的
查询合并了
返回的三个表
,您只需根据表中的
公共列
选择表中的
记录

SELECT tutor_name FROM yourDB
LEFT JOIN tableA ON tutor_name = '%$queryString%'
LEFT JOIN tableB ON tutor_name = '%$queryString%';

希望这对你有用。

不。。。有不同的字段名和表。。示例:导师表中的导师名称、科目表中的科目名称、研究所表中的研究所名称等。这行的“s”)中的“s”是什么意思?它被称为子查询的
别名,我还有另一个问题。。现在,我的自动完成框显示所有科目、导师姓名、学院等相关关键字的结果。现在我想在自动完成框中对它们进行分类。。例如:科目类别下的科目、导师类别下的导师姓名等。现在最好的办法是针对新问题单独提出一个问题。这个问题已经解决了,新问题与这个问题没有任何关系。。。有不同的字段名和表。。示例:导师表中的导师名称、科目表中的科目名称、研究所表中的研究所名称等。这行的“s”)中的“s”是什么意思?它被称为子查询的
别名,我还有另一个问题。。现在,我的自动完成框显示所有科目、导师姓名、学院等相关关键字的结果。现在我想在自动完成框中对它们进行分类。。例如:科目类别下的科目、导师类别下的导师姓名等。现在最好的办法是针对新问题单独提出一个问题。此问题已解决,新问题与此问题没有任何关系。您以前的所有问题都没有回答吗?您以前的所有问题都没有回答吗?如果有不同的字段名和表。。示例:导师表中的导师名称、科目表中的科目名称、学院表中的学院名称等。。。那么我如何使用这个查询呢?在subject_name='%$queryString%'上左连接subjectTbl,应该是这样。如果有不同的字段名和表。。示例:导师表中的导师名称、科目表中的科目名称、学院表中的学院名称等。。。那么我如何使用这个查询呢?在subject_name='%$queryString%'上左连接subjectTbl,应该是这样的。