喔唷网,网络从业者技术信息综合门户!

PHP连接MySql数据库常规操作方法

来源:喔唷网 编辑:喔唷教程 时间:2025-04-02 浏览:
PHP提供了多种连接mysql数据的方式常规的有mysqli_connect()和PDO模式.在PHP中连接MySQL数据库主要有三种方式,我将详细介绍每种方法并提供完整示例.

在PHP的迭代中逐渐更新了多种连接MYSQL的方法,PHP连接MYSQL提供了三种比较常用的连接方式下面我们将详细介绍每种方法并提供完整示例。

一、三种主流的连接方式

方式特点PHP版本要求推荐指数
MySQLi 面向过程简单直接PHP 5.0+★★★
MySQLi 面向对象现代OOP风格PHP 5.0+★★★★
PDO支持多种数据库,防SQL注入PHP 5.1+★★★★★

通过上面表格我们清楚认识到,PDO的连接模式不仅高效而且更加安全,是我们推荐的一种方式,下面我们来看看各种连接案例的使用。

1、MySQLi 面向过程连接方法实例,这种模式比较传统是以往常用的一种方式。

<?php
$link = mysqli_connect("localhost", "root", "123456", "mydb");

if (!$link) {
    die("连接错误: " . mysqli_connect_error());
}

$result = mysqli_query($link, "SELECT * FROM users");

while ($row = mysqli_fetch_assoc($result)) {
    echo $row['username'] . "<br>";
}

mysqli_close($link);
?>

1、MySQLi 面向对象连接方法实例,这是现在比较常用的一种基础语法。

<?php
$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "mydb";

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

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

// 执行查询
$sql = "SELECT id, name FROM users";
$result = $conn->query($sql);

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

// 关闭连接
$conn->close();
?>

3、PDO连接MySQL的方法实例,这是一种目前安全而且最推荐的一种方法。

<?php
$host = 'localhost';
$db   = 'mydb';
$user = 'root';
$pass = '123456';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
    
    // 预处理SQL防止注入
    $stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
    $stmt->execute(['id' => 1]);
    
    while ($row = $stmt->fetch()) {
        echo $row['name'] . "<br>";
    }
} catch (PDOException $e) {
    die("数据库连接失败: " . $e->getMessage());
}
?>

以上就是我们的实际案例,下面我们针对遇到的问题进行说明:

PDO连接错误处理,将 PDO 的错误模式设置为“异常模式”。当数据库操作发生错误时,PDO 会抛出 PDOException 异常,而不是静默失败或返回错误代码。

// PDO错误模式设置(必须)
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

预处理语句,防止SQL注入。这段代码是使用 MySQLi(MySQL Improved Extension) 的预处理语句(Prepared Statement)来安全地插入数据到数据库。这段代码是MySQLi中安全操作数据库的标准做法,通过预处理语句和参数绑定,兼顾了安全性和性能。这是现代PHP开发中必须掌握的技能!

// MySQLi预处理
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
$stmt->execute();

// PDO预处理
$stmt = $pdo->prepare("UPDATE users SET name = ? WHERE id = ?");
$stmt->execute([$name, $id]);

针对PDO连接数据库我们建议做好前期的配置设置。

// 禁用预处理语句模拟
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

// 设置字符集
$conn->set_charset("utf8mb4");

下面我们提供一个完整的PHP操作MYSQL的封装实例用于大家学习。

class DB {
    private static $instance = null;
    private $pdo;
    
    private function __construct() {
        $dsn = 'mysql:host=localhost;dbname=mydb;charset=utf8mb4';
        try {
            $this->pdo = new PDO($dsn, 'root', '123456', [
                PDO::ATTR_PERSISTENT => true,
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ]);
        } catch (PDOException $e) {
            die($e->getMessage());
        }
    }
    
    public static function getInstance() {
        if (!self::$instance) {
            self::$instance = new DB();
        }
        return self::$instance;
    }
    
    public function getConnection() {
        return $this->pdo;
    }
}

// 使用示例
$db = DB::getInstance()->getConnection();
$stmt = $db->query("SELECT * FROM users LIMIT 5");

这段代码实现了一个PDO连接数据库的单例封装,具有多项设计优势和实用好处。1、确保整个应用生命周期内只有一个数据库连接实例,避免重复创建连接,节省资源,防止因多个连接导致的性能问题,并且统一管理连接状态。安全提升,性能优化,可维护性强。

上一篇:没有了
下一篇:没有了
栏目导航
相关文章

喔唷网

Copyright © 2009-2025 viuoo.com

Top