hyppy
hyppy

Reputation: 23

How do I process multiple results from a SQL query sharing a common ID?

I'm failing miserably to get my head around what I know ought to be simple, and am unsure if the solution lies in the query or in processing the result, so struggling to search for what I'm sure has been covered in another post.

I'm working with a single MySQL table, from which I need to be able to retrieve and process content that shares a common ID. Unfortunately, restructuring the database isn't an option.

Here's what a simple SELECT * WHERE contentID = '2' query returns:

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

What's the correct way to retrieve the specific 'title', 'intro' or 'main' content?

Thanks in advance.

Upvotes: 2

Views: 315

Answers (4)

Kris
Kris

Reputation: 8868

<?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'];
    //..................................

        }

Upvotes: -1

Jeff Watkins
Jeff Watkins

Reputation: 6359

You'd have to put your content type into the where clause. The Id and type should form a natural ok and should be constrained as such. If not, time to redesign. Also, id consider putting the content type as a lookup rather than a string.

Upvotes: 0

Miqdad Ali
Miqdad Ali

Reputation: 6147

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

You can use the $array for each content type

Upvotes: 2

Emil Vikstr&#246;m
Emil Vikstr&#246;m

Reputation: 91942

Fetch all the rows into an array:

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

Upvotes: 2

Related Questions