user1799052
user1799052

Reputation: 23

how to retrieve row value using php mysql

source code:

$display = 1004;
$result1 = mysql_query("SELECT id, username FROM users where parentid=$diplay");
$resrow = mysql_fetch_row($result1); 
$g = $resrow[0]; 
$g1 = $resrow[1]; 
$g2 = $resrow[3]; -error not display
$g3 = $resrow[4];
$g4 = $resrow[5];


echo "ID: $g";
echo "ID: $g2";
echo "ID: $g3";
echo "ID: $g4";

i have to show 1005, 1007, 1008 but i can retrieve $g value only:

ans: 1004 daniel

how i can show other values 1007,1008

Table

id           ----name  -----    parentid
-----------------------------------
1004            daniel         1003
1005            peter          1004
1007            michael        1004
1008            sam            1004

ans:

        $g
        1004
     /        \
    g2         g3   
   1005       1007

Upvotes: 1

Views: 2924

Answers (3)

traq
traq

Reputation: 281

You are confusing rows with columns. On this database:

users
id    | name    |  parentid
------+---------+----------
1004  | daniel  |  1003
1005  | peter   |  1004
1007  | michael |  1004
1008  | sam     |  1004

The query SELECT id, name FROM users where parentid=1004 will return rows 1005, 1007, and 1008.

mysql_fetch_row() only fetches one row at a time.
That's across (the id and name), not down (several ids).

To get a list of all of the ID values that match, you need to loop through all the rows:

$parentid = 1004;
$result = mysql_query( "SELECT `id` FROM `users` WHERE `parentid`=$parentid" );
while( $row = mysql_fetch_row( $result ) ){ $IDs[] = $row[0]; }
// $IDs is now an array holding each id from the resultset.
// It will look something like:
/*
array(3) {
 [0]=>
    int(1005)
 [1]=>
    int(1007)
 [2]=>
    int(1008)
}
*/

As mentioned above, don't use ext/mysql for new work. I'm using it here only because that's how you asked your original question. You need to update your code and use ext/mysqli or PDO instead.

Upvotes: 1

Jayson O.
Jayson O.

Reputation: 487

You only select id and username in your query, which might have returned array like this

array(
    'id'=> 1005
    'username'=> 'name'
)

if 1005,1007,1008 are child of 1004. you might want to do

while($resrow = mysql_fetch_array( $result1 )){
    echo "ID:". $resrow['id'];
    echo "Name:". $resrow['username'];
}

Upvotes: 2

Chunliang Lyu
Chunliang Lyu

Reputation: 1760

From your mysql query, you can only get column id and username. You need to modify your sql to include more columns.

Upvotes: 2

Related Questions