2013-04-22 60 views
1

我正在尝试学习php并遇到了一个我需要帮助的任务。多次搜索数据库中的表单元素

背景信息 - 我有一个postgresql数据库,其中有多个表格 。

我需要什么 - 当我在HTML页面上的表单中输入任何内容时,我需要从包含 信息的所有表中提取所有与我输入内容相关的信息。

示例 - 假设我在表单中输入食物中毒。我需要访问 所有表格,并提取有关食物 中毒的不同信息。

My code: (the connection part is not being posted as it works fine) 


    <?php 
      $result = pg_prepare($dbh, "Query1", 'SELECT * FROM Project.bacteria WHERE disease = $1'); 
      // if (pg_numrows($result) == 0) { 
       // $result = pg_prepare($dbh, "Query1", 'SELECT * FROM Project.virus WHERE disease = $1'); 
      // } 

      //$sql = "SELECT * FROM Project.bacteria WHERE disease="; 
      //$result = pg_query($dbh, $sql); 
      $result = pg_execute($dbh, "Query1", array($disease)); 
      if (!$result) { 
        die("Error in SQL query: " . pg_last_error()); 
      } 
      //$rows = pg_fetch_all($result) 

    /*// iterate over result set 
    // print each row*/ 
       while ($row = pg_fetch_array($result)) { 
         echo $row[0]." ".$row[1]. "<br />"; 
        } 
?> 

对于上面的代码,当我进入food poisoning它搜索只是一个表,即bacteria并返回相关信息(这里作为测试我在row position 1 and row position 2采取公正的信息。)

由于是多个表,如表drugs,存储用于治疗食物中毒的药物信息,我想从相应的表中提取该信息。

任何帮助,将不胜感激。

+0

我认为你正在寻找SQL的'union'运算符。 – arkascha 2013-04-22 06:28:10

+0

我想知道所有的表格是否包含柱状疾病? – 2013-04-22 06:36:02

回答

1

试试这个

SELECT * FROM bacteria WHERE disease = '' 
UNION ALL 
SELECT * FROM drugs where desease = '' 

但我认为最好的办法是你正常化的表。 :)

+0

我在表中有不同的列,我可以做多个表的右/左连接吗? – 2013-04-22 12:58:41

+0

嗯..我想你可以.. – eurica 2013-04-23 01:50:48