怎样把MySQL里的数据库打印到网页中?
在这里要介绍一个PHP函数mysqli_fetch_assoc() 它的功能是获取数据库的一行值;
演示:请看以下代码:
$link=mysqli_connect("localhost","root","","stu_info");mysqli_set_charset($link,'utf8');$sql = "insert into user (id,name,password,sex,hobby,city)values(null,'$name','$password','$sex','$hobbies','$sf')";mysqli_query($link,$sql);$rel = mysqli_query($link,'select * from user');$result = mysqli_fetch_assoc($rel);var_dump($result);
我在第五行给了数据库一个查询数据表的命令,并且把它赋给了$rel;
然后,使用 mysqli_fetch_assoc() 函数获取值,并输出;
为了方便理解,请看下图:

在前台输入用户名 no1

var_dump 输出了关联数组

输出了第一行
mysqli_fetch_assoc() 函数只会获取第一行的值吗?请往下看:
$link=mysqli_connect("localhost","root","","stu_info");mysqli_set_charset($link,'utf8');$sql = "insert into user (id,name,password,sex,hobby,city)values(null,'$name','$password','$sex','$hobbies','$sf')";mysqli_query($link,$sql);$rel = mysqli_query($link,'select * from user');$result = mysqli_fetch_assoc($rel);var_dump($result);$result = mysqli_fetch_assoc($rel);var_dump($result);
我把这两行代码写两遍会发生什么?
会输出两个相同的关联数组吗?


非常神奇哈,它输出了第二行数据,要是写三遍呢?

毫无疑问,输出了第三行数据;
结论:
mysqli_fetch_assoc() 函数每写一次,就会自动往下读一行;
所以要想获取数组里的全部数据,我们只需要用一个循环就可以实现了啊!
由于数据库里的数据条数是动态变化的,我们最好选择while循环来实现
像这样:
$rel = mysqli_query($link,'select * from user');while($result = mysqli_fetch_assoc($rel) ){var_dump($result);}
就可以把数据库全部内容输出了!
$result = mysqli_fetch_assoc($rel) 语句为什么可以放在while 里面?
因为mysqli_fetch_assoc() 每次调用将自动返回下一条结果记录,只要mysqli_fetch_assoc($rel)返回值不是false,就会执行输出;如果到达结果集的末尾,则返回False。就像while($a=11){} , 这个循环就会往下执行,而当while($a=false){}就不成立,终止循环;
当该函数读到末尾时,就会返回false 这条语句就变成了
while($result = false ){var_dump($result);}
所以就终止了循环

但这样输出出来不太直观!
如果把一些不必要的动西给去掉就更棒了!
既然输出的是关联数组,我们不妨用echo($result[索引]) 来实现
例如 echo($result['id']);就可以输出id的值了 $result['id']和$result['name']之间用 . 连接起来,就可以输出多个值
记得还要放在表格中!
像这样:
echo '<tr>'.'<td>'.$result['id'].'</td>'.'</tr>';
因为列太多了,所以这一行代码会非常的长!就像下面的第37行代码,一定要认真写,防止漏掉
表格的头要单独打印,详见下面代码26-33行;
代码如下:
<!doctype html><html><head><meta charset="utf-8"><title><?php echo('注册页面');?></title></head><body><?php$name=$_POST['username'];$password=$_POST['password'];$sex=$_POST['sex'];$hobby=$_POST['hobby'];$sf=$_POST['shengfen'];$hobbies='';foreach($hobby as $a){$hobbies=$hobbies.$a;}$link=mysqli_connect("localhost","root","","stu_info");mysqli_set_charset($link,'utf8');$sql = "insert into user (id,name,password,sex,hobby,city)values(null,'$name','$password','$sex','$hobbies','$sf')";mysqli_query($link,$sql);$rel = mysqli_query($link,'select * from user');?><table border=1px><tr><th>id</th><th>name</th><th>password</th><th>sex</th><th>hobby</th><th>city</th></tr><?phpwhile($result = mysqli_fetch_assoc($rel) ){echo '<tr>'.'<td>'.$result['id'].'</td>'.'<td>'.$result['name'].'</td>'.'<td>'.$result['password'].'</td>'.'<td>'.$result['sex'].'</td>'.'<td>'.$result['hobby'].'</td>'.'<td>'.$result['city'].'</td>'.'</tr>';}?></table></body></html>
第37行代码理解起来可能比较麻烦,我们一步一步来理解
大概的意思就是输出一个表格 如下:
<tr><td>$result['id']</td><td>$result['name']</td><td>$result['password']</td><td>$result['sex']</td><td>$result['hobby']</td><td>$result['city']</td></tr>
这样就可以看懂了吧;
因为这个表格是在php代码中,所以肯定不能这样写
所以可以把所有的<tr></tr><td></td>标签挨个输出;
看下面:
echo '<tr>';echo '<td>';echo $result['id'];echo '</td>';echo '<td>';echo $result['name'];echo '</td>';echo '<td>';echo $result['password'];echo '</td>';echo '<td>';$result['sex'];echo '</td>';echo '<td>';echo $result['hobby'];echo '</td>';echo '<td>';echo $result['city'];echo '</td>';echo '</tr>';
把代码第37行换成这一段代码也可以输出;
这样是并不是就非常直观了呢,就是代码多了那么亿点点;
<table></table>里的PHP代码记得带上<?php ?>
一定要分清代码的结构!!!
下图可方便理解:

这样就可以实现把MySQL数据库打印到网页中了!
效果图:

测试太多了,图有点长
看一下网页中的数据和MySQL数据是否一致:
对比图:

一毛一样!成功了!
记得关注阿帆fan

@阿帆fan




