2013-03-27 78 views
2

我正在學習php和mysql,現在遇到了問題。如何使用我的自動建議腳本中的表B中的數據從表A檢索數據?

我正在使用一個自動化的php/javascript腳本,開箱即用,基本上以html形式輸入用戶,使用javascript將用戶輸入發送到我的php文件,並通過數據庫搜索「LIKE 「查詢命令,然後返回包含查詢找到的」名稱「數據的列表項的html列表。

現在我的問題:我在我的數據庫中有兩個表,wp_terms和wp_term_taxonomy(參見illustraton下文)。目前,查詢搜索「wp_terms」表中的所有條目並選擇「名稱」條目。但我想添加一種過濾器。我只希望得到具有整數「2」作爲「父母」的條目的名稱。

我認爲對此的意見將通過「wp_term_taxonomy」進行搜索,將整數「2」的條目的「term_id」存儲爲父項。然後有另一個查詢通過「wp_terms」表並輸出存儲的「term_id's」的「名稱」。

我不知道這是否是正確的方法。我已經嘗試了幾天,沒有成功,真的很感謝一些幫助。

數據庫表說明: enter image description here

我autosuggest.php代碼。這是魔法發生:

<?php 
    $db_host = 'localhost'; 
    $db_username = 'user'; 
    $db_password = 'passw'; 
    $db_name = 'db'; 

    $db = new mysqli($db_host, $db_username ,$db_password, $db_name); 

    if(!$db) { 

     echo 'Could not connect to the database.'; 
    } else { 

     if(isset($_POST['queryString'])) { 
      $queryString = $db->real_escape_string($_POST['queryString']); 

      if(strlen($queryString) >0) { 

       $query = $db->query("SELECT name FROM wp_terms WHERE name LIKE '$queryString%' LIMIT 10"); 

       if(mysqli_num_rows($query) > 0) { 
        if($query) { 
        echo '<ul>'; 
         while ($result = $query ->fetch_object()) { 
          echo '<li onClick="fill(\''.addslashes($result->name).'\');">'.$result->name.'</li>'; 
         }  
        echo '</ul>'; 

        } else { 
         echo 'OOPS we had a problem :('; 
        } 
       } else { 
        echo '<ul>'; 
        echo '<span style="color:#0196E3";>'.$queryString.'</span> no matches found.'; 
        echo '</ul>'; 
       } 
      } else { 
       // do nothing 
      } 
     } else { 
      echo 'There should be no direct access to this script!'; 
     } 
    } 
?> 
+0

我編輯了您的帖子以包含您以前超鏈接的圖片。 – Leng 2013-03-27 21:42:23

回答

0

您需要使用JOIN做到這一點。

SELECT `wp_terms`.`name` 
FROM `wp_terms` 
INNER JOIN `wp_term_taxonomy` 
ON `wp_terms`.`term_id`=`wp_term_taxonomy`.`term_id` 
AND `wp_term_taxonomy`.`parent`=2 
WHERE `wp_terms`.`name` LIKE '$queryString%' 
LIMIT 10 

Take a look here for visual explanations of how joins work.

基本上,當你做一個連接,你在此基礎上加入您使用的是結合兩個表。該查詢內部聯接基於term_id表,並確保您只返回行,其中parent等於2

順便說一句,你真的應該使用PDObinding parameters。 MySQLi將disappoint you in the long run,我相信它的使用甚至可能會被棄用。

+0

美麗。非常感謝!這件事情讓我感到很快樂! – user1991083 2013-03-27 21:47:00

+0

@ user1991083很高興能幫到你!謝謝你接受我的回答 - 如果你不介意的話,我也會很高興。 ;) – Leng 2013-03-27 21:49:05

+0

我沒有所需的15個聲望來投票:/我會稍後再回來,如果我記得它會給你一個贊成票:)無論如何,再次感謝。 – user1991083 2013-03-27 22:02:13

相關問題