2012-06-05 88 views
2

为了让我的头脑清楚我所知道的应该是简单的,我不确定解决方案是处于查询还是处理结果,所以我努力寻找我肯定已经涵盖的内容另一篇文章。如何处理来自共享公共ID的SQL查询的多个结果?

我正在使用单个MySQL表,从中我需要能够检索和处理共享公共ID的内容。不幸的是,重组数据库不是一种选择。

下面是一个简单的SELECT * WHERE contentID = '2'查询返回:

|contentType|contentID|content  | 
-------------------------------------- 
|title  |2  |<h1>title</h1>| 
|intro  |2  |<p>intro</p> | 
|main  |2  |<p>main</p> | 

什么来检索具体的“标题”,“前奏”或“主”内容的正确方法是什么?

在此先感谢。

+0

你已经在你的例子中,也许你需要澄清你的问题? – lanzz

回答

2
$result = mysql_query("SELECT * WHERE contentID = '2'"); 
    $array = array(); 
    while($rows = mysql_fetch_array($result,MYSQLI_ASSOC)){ 
     $array[$rows['contentType']] = $rows['content']; 
    } 

可以使用$阵列的每个内容类型

+0

工程很棒。谢谢! – hyppy

2

提取所有行到一个数组:

$data = array(); 
foreach ($rows as $r) { 
    $data[$r['contentType']] = $r['content']; 
} 
+0

谢谢埃米尔,这对我有很大的帮助。 – hyppy

0

你必须把你的内容类型到where子句。 Id和类型应该形成一个自然的好,并应该像这样受到限制。如果不是,则需要重新设计。此外,编号考虑把内容类型作为查询而不是字符串。

-1
<?php 
function executeQuery($query,$connectionObject) 
       { 
       queryString=$query; 
         recordSet=mysql_query(queryString,$connectionObject); 
         if(!$recordSet) 
         { 
          $errorString=mysql_error($this->connectionObject); 
          return array("error"=>$errorString); 
         } 

         return recordSet; 
        } 
       function getNextRecord($recordSet) 
        { 
         $resultArray =mysql_fetch_assoc($recordSet); 
         if(!empty($resultArray)) 
         return($resultArray); 
         else 
         return "false"; 


        } 

     $result = executeQuery("SELECT * FROM foo WHERE contentID = '2'"); 

     $nextRecord = getNextRecord($result); 
     while($nextRecord!="false") 
     { 
     $nextRecord = getNextRecord($result); 
     //...........Process the record..... 

     ->$nextRecord['contentType']; 
     ->$nextRecord['contentID']; 
     ->$nextRecord['content']; 
    //.................................. 

     }