从多个表中选择一个值

时间:2012-11-26 05:37:37

标签: php jquery mysql

我已将搜索选项添加到项目中。在某些特定用户在搜索文本框中输入时,我使用了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!';
}

?> 

这对我来说工作正常..但我的问题是我需要通过输入关键字来检查多个表。在这里我只使用一个表..任何人都可以告诉我如何将我的其他表附加到此查询?

2 个答案:

答案 0 :(得分:4)

使用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 Injection攻击,请阅读以下文章

答案 1 :(得分:0)

以下Query merge three tables returns selective records present in tables只有basis of common column in the tables SELECT tutor_name FROM yourDB LEFT JOIN tableA ON tutor_name = '%$queryString%' LEFT JOIN tableB ON tutor_name = '%$queryString%'; 上的{{1}}。

{{1}}

希望这适合你。