PHP 5 及以上版本建议使用以下方式连接 MySQL :
MySQLi :MySQLi 只针对 MySQL 数据库,MySQLi 还提供了 API 接口。
PDO (PHP Data Objects):PDO 应用在 12 种不同数据库中。
共同点:
1. 两者都是面向对象
2. 两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。
确保wamp里已经安装好了MySQLi或PDO,查看方式:echo phpinfo();
接下来将会使用以下三种方式来演示 PHP 操作 MySQL:
MySQLi (面向对象)
MySQLi (面向过程)
PDO
1. MySQLi - 面向对象
header('Content-Type: text/html;charset=utf-8');
// echo phpinfo();
// MySQLi面向对象
// 在我们访问MySQL数据库之前,我们需要先连接到数据库服务器
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";
// 创建连接
$conn = new mysqli($servername, $username, $password, $database);
// mysqli_set_charset($conn,"utf8"); // 解决中文乱码
$conn->query("SET NAMES utf8"); // 解决中文乱码方法二
// 检测连接
if ($conn->connect_error) {
die("连接失败:" . $conn->connect_error);
}
echo "连接成功";
// 查询
$sql = "select * from users2";
$res = $conn->query($sql);
$data = $res->fetch_all();
var_dump($data);
// 添加
$loginName = 'zhangsan';
$loginSecret = '123455';
$query = "insert into users2(loginName,loginSecret) values('" . $loginName . "','" . $loginSecret . "')";
$rs = $conn->query($query);
var_dump($rs);
?>
2. MySQLi - 面向过程
header('Content-Type: text/html; charset=utf-8');
// MySQLi - 面向过程
$servername = "localhost";
$username = "root";
$password = "";
$database = "test";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $database);
// 检测连接
if (!$conn) {
die("连接失败:" . mysqli_connect_error());
}
echo "连接成功";
// 修改数据库连接字符集为 utf8
mysqli_set_charset($conn,"utf8");
// 查询
$sql = "select * from users2 "; //SQL语句
$result = mysqli_query($conn, $sql); //查询
while ($row = mysqli_fetch_array($result)) {
echo $row['loginName'] . "
";
}
mysqli_close($conn);
?>
3. PDO连接MySQL数据库
header('Content-type:text/html; charset=utf-8');
$db_Type = "mysql"; //数据库类型
$host = "localhost"; //主机名
$dbName = "test"; //数据库名
$userName = "root"; //用户名
$password = ""; //密码
$dsn = "{$db_Type}:host={$host};dbname={$dbName}";
try {
$pdo = new PDO ($dsn, $userName, $password); //创建一个连接对象
$pdo->exec('set names utf8'); //设置编码
$sql = "insert into users2 (loginName,loginSecret) VALUES ('李四','123423')";
$pdo->exec($sql);
} catch (PDOException $e) {
die('操作失败' . $e->getMessage());
}
// 关闭连接
$pdo = null;
?>
连接在脚本执行完毕后会自动关闭,也可以使用代码关闭连接:
MySQLi - 面向对象
$conn->close();
MySQLi - 面向过程
mysqli_close($conn);
PDO
$conn = null;