怎样把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>
<?php
while($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