// 这是因为你从资源型结果集中获取数据时只获取了一次, 如果查询为多条数据应该迭代资源型结果集
成都网络公司-成都网站建设公司创新互联建站十年经验成就非凡,专业从事成都网站建设、成都做网站,成都网页设计,成都网页制作,软文营销,1元广告等。十年来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:13518219792,我们期待您的来电!
$r = mysql_query($sql); // 你的结果集
$result = [];
while (true) {
$ary = mysql_fetch_assoc($r); // 取出第一条数据, 数据指针向后移动一位
if ($ary) {
$result[] = $ary; // 存储到结果数组中
} else {
break; // 如果取出的结果为false, 则代表数据获取完毕, 终止循环
}
}
echo 'pre';
print_r($result); // 打印最终结果
echo '/pre';
多表查询的话,表与表之间要有关联字段。
例外,应该用join查询, 比如:
select * from 表1 left join 表2 on 表2.uid = 表1.id where 表1.字段 = 'XXXX'
你这不是只查询了一条,而是你只输出了一条罢了
$sql="select * from product ORDER BY rand() LIMIT 4 ";
$mysql=mysql_query($sql);
while($row=mysql_fetch_assoc($mysql)){
//循环输出记录
print_r($row);
}
当然,如果你的记录不足4条,也没法显示出来
用联合查询就可以实现
一般包括左外连接,右外连接和内连接
可以用on设置每两个表之间的关联关系,查询后遍历输出到页面就可以了
PHP从数据库提取并显示数据的典型代码如下:
?php
//连接数据库,三个参数:数据库服务器IP,用户名,密码
if(mysql_connect('127.0.0.1', 'root', '123456')){
//数据库连接成功,开始查询,下面是SQL语句
//此例子SQL查询数据库test里面的表tab,假设有一个数值字段score,查询其值大于60的数据行
$sql="select from test.tab where score60";
if ($res=mysql_query($sql)){
//数据库查询执行成功
while($row=mysql_fetch_array($res)){
//循环查询满足条件的所有记录
echo '姓名:'.$row['name'] . '成绩:'. $row['score']. 'br';
}
//删除查询
mysql_free_result($res);
}else echo "执行数据库查询失败,语句: $sqlbr原因:".mysql_error();
//关闭数据库
mysql_close();
}else echo "数据库连接失败,原因是:".mysql_error()l
$conn= mysqli_connect($DbIP,$DbUserName,$DbPwd,$DbName);//数据库地址,用户名,密码,数据库名
$name = '123';
$sql = "SELECT name FROM order WHERE name ='".$name."'";
$res = mysqli_query($conn,$sql);//也可以直接用 $res = mysqli_query($sql);
$arr = array();
if($res is_object($res)){
while($row=mysql_fetch_assoc($res)){
$arr[] = $row;
}
}
print_r($arr);