源代码:
$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
答案 0 :(得分:2)
从您的mysql查询中,您只能获得列id
和username
。您需要修改您的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()
一次只能获取一行
这是 (id
和name
),不是(几个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/mysqli
或PDO
。