php5中新增了PDO,他是一个数据库访问抽象层。你也可以理解为驱动程序。
这个东西比mysqli的好处就是,mysqli只支持mysql,但是PDO支持目前市面上常见的大多数数据库。
万一你做的项目从mysql换成了sql server或者oracle,那你要改的地方可就太多了。
所以现在还是建议使用PD
马上开整!
这次咱们写高级点,把连接数据库那块的内容,写成一个公共的文件!
<?php
define("DB_HOST","127.0.0.1");//数据库地址
define("DB_USER","root");//用户名
define("DB_PWD","你的数据库密码");//密码
define("DB_NAME","phptest");//要连接的数据库名称
define("DB_PORT","3306");//数据库端口号
define("DB_TYPE","mysql");//数据库类型
define("DB_CHARSET","utf8");//设置字符集
define("DB_DSN","mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET);
//DSN 提供连接数据库需要的各种信息,相当于在连接数据库的时候,附加我们的各种信息.
//举个例子,我们的数据库可能不在3306,在别的端口,或者字符集不是utf-8,我们就是通过这个发送出去的
?>
然后是php中的写法:
<?php
require "config.php";
//require和include的作用完全一样,但是require遇到错误会停止
try{
//try{}catch{} 用于处理操作,如果try中的语句遇到错误,就会自动进入catch中去运行
//通过pdo语句连接数据库
$pdo = new PDO(DB_DSN,DB_USER,DB_PWD);
}catch(PDOException $e){
//一旦出错 输出错误信息
echo $e->getMessage();
}
$query = "select * from user";//拼出查询语句
$result = $pdo->prepare($query);//把查询语句转化为一条pdo命令
$result->execute();//把pdo命令传入查询方法 同es6写法
//引入显示模板html
include_once("query.html");
html中的写法和原来区别不大:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>已注册用户列表</title>
<script src="https://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
<style>
.tableBox {
width: 600px;
}
.table {
background: #fff;
}
</style>
</head>
<body class="container bg-info">
<div class="tableBox">
<h3>已注册用户列表</h3>
<table class="table table-bordered">
<thead>
<tr>
<td>id</td>
<td>邮箱</td>
<td>密码</td>
<td>电话</td>
</tr>
</thead>
<tbody>
<!--fetch() pod专用的写法 获取结果集 ::FETCH_ASSOC 数组形式-->
<?php while($rows = $result -> fetch(PDO::FETCH_ASSOC)) { ?>
<tr>
<td>
<?php echo $rows['id']?>
</td>
<td>
<?php echo $rows['email']?>
</td>
<td>
<?php echo $rows['password']?>
</td>
<td>
<?php echo $rows['tel']?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</body>
</html>