Database
在 php5 之前,推荐使用的方式是例如 php_mysql.dll/php_psql.dll 等原生驱动。
比如, php_mysql.dll 的语法如下:
// 首先,设置页面编码header("Content-Type: text/html; charset=UTF8");// 其次,建立数据库连接$conn = mysql_connect("localhost", "root", "root") or die("数据库连接失败");// 创建数据库if(mysql_query("create database xxx", $con)) { ???echo "创建数据库成功。";} else { ???echo "创建数据库失败:" . mysql_error() . "<br>";}// 切换到数据库mysql_select_db("xxx") or dir("打卡数据库失败。");// 设置 utf8 编码mysql_query("select names utf8");// 创建表$sql = "create table person( ?id int primary key auto_increment, ?name varchar(20) not null, ?salary float default 1500)";mysql_query($sql);// 插入数据mysql_query("insert into person (name, salary) values (‘张飞‘, 3333)");mysql_query("insert into person (name, salary) values (‘关羽‘, 3334)");// 查询数据// 返回结果是:万能的数组$res = mysql_query("select * from person");// 显示数据,使用 foreach 循环echo "<table>\n";foreach($res as $r) { ???echo " ?<tr><td>$r[name]</td><td>$r[salary]</td></tr>\n";}echo "\n</table>";// 最后,释放连接mysql_close($conn);
因为 mysql 插件有很多问题,所以,后来出现了 php_mysqli.dll
插件,其中 i 代表 improvement(改进/升级) 的意思,对连接数据库的效率及安全性进行了大量优化。
mysqli 插件除了完全兼容 mysql 的语法之外,还支持用 oo 的方式连接数据库:
// 连接数据库$conn = new mysqli("localhost", "root", "root", "text");$conn -> query("set names utf8");// 查询$sql = $conn->query("select * from person");// 获取结果$res = $conn->fetch_array(MYSQLI_ASSOC);// 显示结果echo "<table>\n";echo "<tr><td>" . $res[‘name‘] . "</td><td>" . $res[‘salary‘] . "</td></tr><br>";echo "</table>";
虽然 mysqli 插件已经非常好用。但是…
php 能连接的数据库可不止 mysql 啊,还有 oracle/sqlserver/postgres/sqlite 等,每个数据库都有自己的插件,都有自己的语法…所以后来,PHP 推出了自己的连接数据库的标准, 即 PDO(PHP Data Object) 接口,对数据库的连接进行了规范。所以,采用 DPO 的所有数据库,语法得到了统一:
// 连接数据库$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "root", "test");// 操作数据库n$pdo->exec("set names utf8");$pdo->exec("create table person ...") or die("创建失败");$pdo->exec("insert into ?person ...") echo and ("插入成功");// query$st = $pdo->query("select xxx from yyy");$rows = ?$st->fetch(PDO::FETCH_ASSOC);print_r($rows);// 使用 Prepare 的方式进行操作$stmt = $pdo->prepare("select name from person where id = :id");$stmt->bindParam(":id", $xxx, PDO::PARAM_INT);$stmt = $stmt->execute();$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);print_r($rows);// 释放链接$pdo = null;
PHP学习(四)
原文地址:https://www.cnblogs.com/Mingsnow/p/8127388.html