如何使用php mysql检索行值

时间:2012-11-05 02:47:28

标签: php mysql

源代码:

$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";

我必须显示1005,1007,1008,但我只能检索$ g值:

ans:1004 daniel

我怎样才能显示其他值1007,1008

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

ANS:

        $g
        1004
     /        \
    g2         g3   
   1005       1007

3 个答案:

答案 0 :(得分:2)

从您的mysql查询中,您只能获得列idusername。您需要修改您的sql以包含更多列。

答案 1 :(得分:2)

您只需在查询中选择ID和用户名,这可能会像这样返回数组

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

如果1005,1007,1008是1004的孩子,你可能想要

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

答案 2 :(得分:1)

您将混淆。在这个数据库中:

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

查询SELECT id, name FROM users where parentid=1004将返回行1005,1007和1008.

mysql_fetch_row()一次只能获取一行 这是 idname),不是(几个id)。

要获取匹配的所有ID值的列表,您需要遍历所有行:

$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)
}
*/

如上所述,不会将ext/mysql用于新作品。我在这里使用它只是因为你问你原来​​的问题。您需要更新代码并改为使用ext/mysqliPDO