Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

PHP 教程

PHP 主页 PHP 简介 PHP 安装 PHP 语法 PHP 注释 PHP 变量 PHP Echo / Print PHP 数据类型 PHP 字符串 PHP 数字 PHP 类型转换 PHP 数学 PHP 常量 PHP 魔术常量 PHP 运算符 PHP If...Else...Elseif PHP Switch PHP 循环 PHP 函数 PHP 数组 PHP 超级全局变量 PHP 正则表达式

PHP 表单

PHP 表单处理 PHP 表单验证 PHP 表单必填 PHP 表单 URL/电子邮件 PHP 表单完成

PHP 高级

PHP 日期和时间 PHP Include PHP 文件处理 PHP 文件打开/读取 PHP 文件创建/写入 PHP 文件上传 PHP Cookie PHP Session PHP 过滤器 PHP 高级过滤器 PHP 回调函数 PHP JSON PHP 异常

PHP OOP

PHP 什么是 OOP PHP 类/对象 PHP 构造函数 PHP 析构函数 PHP 访问修饰符 PHP 继承 PHP 常量 PHP 抽象类 PHP 接口 PHP 特性 PHP 静态方法 PHP 静态属性 PHP 命名空间 PHP 可迭代对象

MySQL 数据库

MySQL 数据库 MySQL 连接 MySQL 创建数据库 MySQL 创建表 MySQL 插入数据 MySQL 获取最后插入 ID MySQL 插入多条数据 MySQL 预处理语句 MySQL 查询数据 MySQL Where 条件 MySQL 排序 MySQL 删除数据 MySQL 更新数据 MySQL 限制数据

PHP XML

PHP XML 解析器 PHP SimpleXML 解析器 PHP SimpleXML - 获取 PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX 简介 AJAX PHP AJAX 数据库 AJAX XML AJAX 实时搜索 AJAX 投票

PHP 示例

PHP 示例 PHP 编译器 PHP 测验 PHP 练习 PHP 服务器 PHP 证书

PHP 参考

PHP 概述 PHP 数组 PHP 日历 PHP 日期 PHP 目录 PHP 错误 PHP 异常 PHP 文件系统 PHP 过滤器 PHP FTP PHP JSON PHP 关键字 PHP Libxml PHP 邮件 PHP 数学 PHP 杂项 PHP MySQLi PHP 网络 PHP 输出控制 PHP 正则表达式 PHP SimpleXML PHP 流 PHP 字符串 PHP 变量处理 PHP XML 解析器 PHP Zip PHP 时区

PHP 连接到 MySQL


PHP 5 及更高版本可以使用以下方法与 MySQL 数据库进行交互:

  • **MySQLi 扩展**(“i” 代表改进)
  • PDO(PHP 数据对象)

早期版本的 PHP 使用 MySQL 扩展。但是,该扩展在 2012 年已被弃用。


我应该使用 MySQLi 还是 PDO?

如果你需要一个简短的答案,那就是“你喜欢哪个就用哪个”。

MySQLi 和 PDO 都有各自的优点。

PDO 可以与 12 种不同的数据库系统一起使用,而 MySQLi 只能与 MySQL 数据库一起使用。

因此,如果你需要将项目切换到使用其他数据库,PDO 可以简化此过程。你只需要更改连接字符串和一些查询。使用 MySQLi,你需要重写整个代码,包括查询。

两者都是面向对象的,但 MySQLi 还提供过程式 API。

两者都支持预处理语句。预处理语句可以防止 SQL 注入,对于 Web 应用程序安全性非常重要。


MySQLi 和 PDO 语法的 MySQL 示例

在本节以及接下来的章节中,我们将演示使用 PHP 和 MySQL 的三种方法:

  • MySQLi(面向对象)
  • MySQLi(过程式)
  • PDO

MySQLi 安装

对于 Linux 和 Windows:在大多数情况下,安装 php5 mysql 包时会自动安装 MySQLi 扩展。

有关安装详细信息,请访问: https://php.ac.cn/manual/en/mysqli.installation.php


PDO 安装

有关安装详细信息,请访问: https://php.ac.cn/manual/en/pdo.installation.php



打开与 MySQL 的连接

在访问 MySQL 数据库中的数据之前,我们需要能够连接到服务器。

示例(MySQLi 面向对象)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// 创建连接
$conn = new mysqli($servername, $username, $password);

// 检查连接
if ($conn->connect_error) {
  die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>

关于上面面向对象示例的说明

在 PHP 5.2.9 和 5.3.0 之前,`$connect_error` 存在问题。如果您需要确保与 PHP 5.2.9 和 5.3.0 之前的版本兼容,请使用以下代码

// 检查连接
if (mysqli_connect_error()) {
  die("数据库连接失败:" . mysqli_connect_error());
}

示例(MySQLi 过程式)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// 创建连接
$conn = mysqli_connect($servername, $username, $password);

// 检查连接
if (!$conn) {
  die("连接失败:" . mysqli_connect_error());
}
echo "连接成功";
?>

示例(PDO)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  // 将 PDO 错误模式设置为异常
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "连接成功";
} catch(PDOException $e) {
  echo "连接失败:" . $e->getMessage();
}
?>

注意: 在上面的 PDO 示例中,我们还指定了一个数据库 (myDB)。PDO 需要一个有效的数据库才能连接。如果没有指定数据库,将会抛出异常。

提示: PDO 的一大优势是它有一个异常类来处理数据库查询中可能出现的任何问题。如果在 `try{ }` 块中抛出异常,脚本将停止执行,并直接流向第一个 `catch(){ }` 块。


关闭连接

当脚本结束时,连接将自动关闭。要提前关闭连接,请使用以下方法

MySQLi 面向对象

$conn->close();

MySQLi 过程式

mysqli_close($conn);

PDO

$conn = null;


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.