首页 > php从mysql取数据的问题

php从mysql取数据的问题

取得的数据只能通过mysql_fetch_array 用while循环输出吗?比如我取的数据是order by id的,我只要最后一条数据,或者第一条数据,要怎么拿?其实我想知道的是,php取出的数据是什么格式的...感觉很怪


<?php
$db = new mysqli('127.0.0.1','user','pass','dbname',3306);
$sql = "SELECT * FROM table ORDER BY id DESC LIMIT 1"; //降序排序取1条数据
$result = $db->query($sql);
while ($row = $result->fetch_row()) { 
    $arr[] = $row;
}
var_export($arr); //数组$arr只有1行,因为结果集$result只有1条数据

//mysqlnd从PHP 5.4开始是默认MySQL驱动,这时可以使用fetch_all,不用循环fetch_row一行行取
var_export( $db->query($sql)->fetch_all() );

mysql_query的结果其实是一个resource,可以通过mysql_fetch_array或者mysql_fetch_assoc配合while来操作。如果只取结果的第一条,那么不用配合while,直接$row=mysql_fetch_array($row)就可以了


如果从mysql_query查询到的结果集中只取一条数据, 是不用while去循环取的.只需要调用一次mysql_fetch_array就可以了.
数据库排序之后, 控制只取第一条, 可以用order id descorder id asc保证你要取的始终排在第一条, 然后用上面的方法取就可以了.
至于格式, mysql_fetch_assoc获取的是关联数组, 就是以你的表的属性为key, 属性值为value,如: $row['id'].
mysql_fetch_row获取的是数字数组, 就是查询语句中字段出现的顺序作为key(以0开始), 属性值为value, 如:$row[0].
mysql_fetch_array是前两者的综合, 它的第二个参数就是用来设置是以关联数组方式获取还是数字数组方式获取或者是都有. 所谓都有, 就是你即可以使用$row[0], 也可以使用$row['id'].
mysql_fetch_object获取的对象, 表的属性作为对象的属性, 属性值作为对象属性的值, 如: $row->id.

其实上面我说的, 手册上都有, 所以你为什么不多看看手册呢.


php查询数据取出的数据这要看你怎么取用什么方法取,也可以取出的是对象也可以取出的是数组


1.先执行,mysqli_query

2.再执行,mysql_fetch_row 或 mysql_fetch_array

如果想只取第一条,执行一次即可。(无需循环)
eg.

$resource = mysqli_query($sql);
$one_data = mysql_fetch_array($resource);

首先,不要再用mysql扩展库了,因为已经废弃了。现在都用mysqli或者pdo。
其次,如果php版本够高的话(5.5以上吧),直接mysqli_fetch_all。


可以var_dump()一下,可以清晰看到格式就是一个二维数组

【热门文章】
【热门文章】