如果用了 MYSQL_BOTH,将得到一个同时包含关联和数字索引的数组。
用 MYSQL_ASSOC 只得到关联索引(如同mysql_fetch_assoc() 那样),
用 MYSQL_NUM 只得到数字索引(如同 mysql_fetch_row 那样)。
1. mysql_fetch_array($rs,MYSQL_ASSOC)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[@test01 model]# php test.php
Array
(
[name] => hellokitty
[addr] => i dont kno
)
[@test01 model]# more test.php
<?php
$link =mysql_connect( "10.12.136.181" , "hello" , "hello" );
if (! $link )
echo "没有连接成功!" ;
mysql_select_db( "hhhhh" , $link );
$q = "SELECT * FROM hello" ;
mysql_query( "SET NAMES GB2312" );
$rs = mysql_query( $q );
if (! $rs )
{
die ( "Valid result!" );
}
$result =mysql_fetch_array( $rs ,MYSQL_ASSOC);
print_r( $result );
mysql_free_result( $rs );
?>
|
2.mysql_fetch_array($rs,MYSQL_BOTH);获取数组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
[@test01 model]# more test.php
<?php
$link =mysql_connect( "10.12.136.181" , "hello" , "hello" );
if (! $link )
echo "没有连接成功!" ;
mysql_select_db( "hhhhh" , $link );
$q = "SELECT * FROM hello" ;
mysql_query( "SET NAMES GB2312" );
$rs = mysql_query( $q );
if (! $rs )
{
die ( "Valid result!" );
}
$result =mysql_fetch_array( $rs ,MYSQL_ASSOC);
print_r( $result );
mysql_free_result( $rs );
?>
[@test01 model]# vim test.php
[@test01 model]# php test.php
Array
(
[0] => hellokitty
[name] => hellokitty
[1] => i dont kno
[addr] => i dont kno
)
[@test01 model]#
|
3.mysql_fetch_array($rs,MYSQL_NUM) 获取数组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[@test01 model]# php test.php
Array
(
[0] => hellokitty
[1] => i dont kno
)
[@test01 model]# more test.php
<?php
$link =mysql_connect( "10.12.136.181" , "hello" , "hello" );
if (! $link )
echo "没有连接成功!" ;
mysql_select_db( "hhhhh" , $link );
$q = "SELECT * FROM hello" ;
mysql_query( "SET NAMES GB2312" );
$rs = mysql_query( $q );
if (! $rs )
{
die ( "Valid result!" );
}
$result =mysql_fetch_array( $rs ,MYSQL_NUM);
print_r( $result );
mysql_free_result( $rs );
?>
[@test01 model]#
|
下面是补充:
php获取结果集的几个方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
<?php
$conn =mysql_connect( "localhost" , "root" , "" );
$select =mysql_select_db( "books" , $conn );
$query = "insert into computers(name,price,publish_data) " ;
$query .= "values('JSP',28.00,'2008-11-1')" ;
$query = "select * from computers" ;
$result =mysql_query( $query );
//以下是使用mysql_result()函数来获取到查询结果
$num =mysql_num_rows( $result );
for ( $rows_count =0; $rows_count < $num ; $rows_count ++){
echo "书名:" .mysql_result( $result , $rows_count , "name" );
echo "价格:" .mysql_result( $result , $rows_count , "price" );
echo "出版日期:" .mysql_result( $result , $rows_count , "publish_data" ). "<br>" ;
}
//以下是使用mysql_fetch_row()函数来获取到查询结果
while ( $row =mysql_fetch_row( $result ))
{
echo "书号:" . $row [0]. "<br>" ;
echo "书名:" . $row [1]. "<br>" ;
echo "价格:" . $row [2]. "<br>" ;
echo "出版日期:" . $row [3]. "<br>" ;
echo "<br>" ;
}
//以下是使用mysql_fetch_array()函数来获取到查询结果
while ( $row =mysql_fetch_array( $result ))
{
echo "书号:" . $row [0]. "<br>" ;
echo "书名:" . $row [1]. "<br>" ;
echo "价格:" . $row [ "price" ]. "<br>" ;
echo "出版日期:" . $row [ "publish_data" ]. "<br>" ;
echo "<br>" ;
}
//mysql_fetch_assoc()同mysql_fetch_array($result,MYSQL_ASSOC)一样
while ( $row = mysql_fetch_assoc( $res )){
echo $row [ 'price' ]. '::' . $row [ 'publish_data' ].”;
} //$row[0]不能取值
//以下是使用mysql_fetch_object()函数来获取到查询结果
while ( $row =mysql_fetch_object( $result ))
{
echo "书号:" . $row ->id. "<br>" ;
echo "书名:" . $row ->name. "<br>" ;
echo "价格:" . $row ->price. "<br>" ;
echo "出版日期:" . $row ->publish_data. "<br>" ;
echo "<br>" ;
}
?>
|
综合比较
本节主要介绍了获取查询结果集的4个函数,此处对它们进行综合比较。
● mysql_result():优点在于使用方便;而缺点在于功能少,一次调用只能获取结果数据集中的一行记录,对较大型的数据库效率较低。
● mysql_fetch_row():优点在于执行效率在4种方法中最高;不足在于只能用数字作为属性索引来获得属性值,在使用时非常容易出现混淆。
● mysql_fetch_array():执行效率同样很高,同mysql_fetch_row()相差无几,并且可以用属性名方式直接获取得属性值,因此,在实际应用中最常用。
● mysql_fetch_object():采用了面向对象的思想,在设计思路上更为先进,如果读者习惯于面向对象的思路来写程序,则会很自然的选择它。其次,该方法的优点还体现在,对于结构较为复杂的数据结果,在逻辑上显得更为清晰。
后3个函数的共同点在于,都是取得当前行的数据,然后自动滑向后一行。有时候,希望控制滑动的行数,这是常常搭配使用的一个函数是mysql_data_seek(),其定义为:
int mysql_data_seek(int result_identifier,int row_number)
调用该函数可以在结果集中向后滑动row_number行,在下一次调用mysql_fetch_*函数时,读取的将是向后滑动row_number行后的记录。
原文链接:http://blog.csdn.net/xluren/article/details/20057291