0

プロジェクトに検索オプションを追加しました。そこで、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!';
}

?> 

これは私にとっては正しく機能しています。しかし、私の問題は、キーワードを入力して複数のテーブルをチェックする必要があることです。ここでは1つのテーブルのみを使用しています。他のテーブルをこのクエリにアタッチする方法を教えてもらえますか?

4

2 に答える 2

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。以下の記事をお読みください

于 2012-11-26T05:39:35.210 に答える
0

以下Query merge three tablesは、上のreturnsものだけです。selective records present in tablesbasis 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%';

これがあなたのために働くことを願っています。

于 2012-11-26T06:12:23.603 に答える