取得的数据只能通过mysql_fetch_array 用while循环输出吗?比如我取的数据是order by id的,我只要最后一条数据,或者第一条数据,要怎么拿?其实我想知道的是,php取出的数据是什么格式的...感觉很怪
PHPz2017-04-11 10:11:10
<?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() );
PHP中文网2017-04-11 10:11:10
首先,不要再用mysql扩展库了,因为已经废弃了。现在都用mysqli或者pdo。
其次,如果php版本够高的话(5.5以上吧),直接mysqli_fetch_all。
大家讲道理2017-04-11 10:11:10
mysql_query的结果其实是一个resource,可以通过mysql_fetch_array或者mysql_fetch_assoc配合while来操作。如果只取结果的第一条,那么不用配合while,直接$row=mysql_fetch_array($row)就可以了
怪我咯2017-04-11 10:11:10
1.先执行,mysqli_query
返回:资源句柄(用于标识资源,比如select结果本身就是一种资源)
2.再执行,mysql_fetch_row 或 mysql_fetch_array
mysql_fetch_row — 从结果集中取得一行作为枚举数组
mysql_fetch_array — 从结果集中取得一行作为关联数组
如果想只取第一条,执行一次即可。(无需循环)
eg.
$resource = mysqli_query($sql);
$one_data = mysql_fetch_array($resource);
PHP中文网2017-04-11 10:11:10
如果从mysql_query
查询到的结果集中只取一条数据, 是不用while
去循环取的.只需要调用一次mysql_fetch_array
就可以了.
数据库排序之后, 控制只取第一条, 可以用order id desc
或order 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
.
其实上面我说的, 手册上都有, 所以你为什么不多看看手册呢.