如何使用我的自动建议脚本中的表B中的数据从表A检索数据?

问题描述:

我正在学习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

您需要使用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