📜  MySQLi-简介(1)

📅  最后修改于: 2023-12-03 15:03:07.832000             🧑  作者: Mango

MySQLi - 简介

MySQLi 是 PHP 中一个非常流行的扩展库,它提供了对 MySQL 数据库的访问方法。MySQLi 还提供了以下特性:

  • 强大、高效的连接管理
  • 面向对象的 API
  • 预处理语句支持,防止 SQL 注入攻击
  • 支持事务处理
  • 应用程序自动恢复
安装和配置

MySQLi 扩展库默认是开启的,只需在 PHP 配置文件中取消注释即可:

extension=mysqli

如果需要手动加载扩展库,可以使用以下命令:

<?php
// 动态加载扩展库
extension_loaded('mysqli') or die('无法加载扩展库!');

// 或者使用 dl() 函数加载扩展库
dl('mysqli.so');
连接 MySQL 数据库

使用 MySQLi 面向对象 API 连接 MySQL 数据库可以这样实现:

<?php
// 创建 mysqli 对象
$mysqli = new mysqli("localhost", "root", "password", "database_name");

// 检查连接是否成功
if ($mysqli -> connect_errno) {
  echo "连接 MySQL 数据库失败:" . $mysqli -> connect_error;
  exit();
}

echo "连接 MySQL 数据库成功。";

如果连接成功,将会输出“连接 MySQL 数据库成功。”,否则将会输出错误信息。

查询数据

使用 MySQLi 查询数据可以这样实现:

<?php
// 创建 mysqli 对象
$mysqli = new mysqli("localhost", "root", "password", "database_name");

// 检查连接是否成功
if ($mysqli -> connect_errno) {
  echo "连接 MySQL 数据库失败:" . $mysqli -> connect_error;
  exit();
}

// 查询数据
$sql = "SELECT * FROM table_name";
$result = $mysqli -> query($sql);

// 输出数据
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
    }
} else {
    echo "0 结果";
}

使用上述代码可以查询表中的所有数据,并输出结果。

预处理语句

使用预处理语句可以避免 SQL 注入攻击并提高执行效率。使用 MySQLi 预处理语句可以这样实现:

<?php
// 创建 mysqli 对象
$mysqli = new mysqli("localhost", "root", "password", "database_name");

// 检查连接是否成功
if ($mysqli -> connect_errno) {
  echo "连接 MySQL 数据库失败:" . $mysqli -> connect_error;
  exit();
}

// 使用预处理语句插入数据
$stmt = $mysqli->prepare("INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $value1, $value2, $value3);

// 设置参数并执行语句
$value1 = "value1";
$value2 = "value2";
$value3 = "value3";
$stmt->execute();

echo "插入数据成功。";

使用上述代码可以插入数据,并输出结果。

事务处理

使用 MySQLi 事务处理可以把一组 SQL 语句组成一个完整的操作单元,并且可以保证每个操作都完全执行或完全不执行。使用 MySQLi 事务处理可以这样实现:

<?php
// 创建 mysqli 对象
$mysqli = new mysqli("localhost", "root", "password", "database_name");

// 检查连接是否成功
if ($mysqli -> connect_errno) {
  echo "连接 MySQL 数据库失败:" . $mysqli -> connect_error;
  exit();
}

// 开始事务处理
$mysqli->begin_transaction();

try {
  // 执行 SQL 语句 1
  $mysqli->query("SQL 语句 1");

  // 执行 SQL 语句 2
  $mysqli->query("SQL 语句 2");

  // 提交事务处理
  $mysqli->commit();

  echo "提交事务处理成功。";
} catch(Exception $e) {
  // 回滚事务处理
  $mysqli->rollback();

  echo "回滚事务处理成功。";
}

使用上述代码可以执行事务处理,并输出结果。

总结

MySQLi 扩展库提供了强大、高效的连接管理和面向对象的 API。预处理语句支持可以避免 SQL 注入攻击,并提高执行效率。事务处理功能可以把一组 SQL 语句组成一个完整的操作单元,并且保证每个操作都完全执行或完全不执行。MySQLi 扩展库是 PHP 开发中不可或缺的一部分。