PHP连接MySQL数据库:从基础到进阶

需积分: 0 0 下载量 195 浏览量 更新于2024-08-30 收藏 49KB DOC 举报
"本文介绍了PHP连接MySQL数据库的六种方法,从简单到复杂,涵盖了面向过程和面向对象的方式,旨在帮助读者快速掌握与MySQL交互的技巧。" PHP是一种广泛用于Web开发的服务器端脚本语言,而MySQL是常用的开源关系型数据库管理系统。两者结合可以构建动态、数据驱动的网站。下面将详细解释这两种连接MySQL数据库的方法: 1. 最简单的方式 - mysql(面向过程) 在PHP中,`mysql`扩展是早期用于连接MySQL数据库的接口。以下是一个简单的示例: ```php <?php $con = mysql_connect("localhost", "root", "password"); // 连接数据库服务器 $select_db = mysql_select_db('test', $con); // 选择数据库 if (!$select_db) { die("无法连接数据库:\n" . mysql_error()); // 错误处理 } $sql = "SELECT * FROM db_table"; // SQL查询语句 $res = mysql_query($sql, $con); if (!$res) { die("无法获取结果:\n" . mysql_error()); // 查询失败处理 } while ($row = mysql_fetch_assoc($res)) { print_r($row); // 输出查询结果 } // 关闭数据库连接 mysql_close($con); ?> ``` 请注意,`mysql`扩展自PHP 5.5.0版本后被弃用,从PHP 7.0.0版本起不再支持,因此在新项目中不建议使用。 2. 新的方式 - mysqli(面向过程) `mysqli`扩展是MySQL Improved的缩写,它提供了更安全、更强大的功能,包括预处理语句和面向对象的接口。以下是面向过程的示例: ```php <?php $mysql_server_name = 'localhost'; // 数据库服务器 $mysql_username = 'root'; // 数据库用户名 $mysql_password = 'password'; // 数据库密码 $mysql_database = 'test'; // 数据库名 $conn = mysqli_connect($mysql_server_name, $mysql_username, $mysql_password, $mysql_database); // 连接数据库 // 连接错误处理 if (mysqli_connect_errno($conn)) { die("连接MySQL失败: " . mysqli_connect_error()); } mysqli_query($conn, "SET NAMES utf8"); // 设置数据库编码格式 // 或者使用:mysqli_set_charset($conn, "utf8"); // 设置默认客户端字符集 // 查询代码 $sql = "SELECT * FROM db_table"; $query = mysqli_query($conn, $sql); ``` 3. mysqli(面向对象) 除了面向过程的接口,mysqli还提供了面向对象的风格,使得代码更加整洁: ```php <?php $servername = 'localhost'; $username = 'root'; $password = 'password'; $dbname = 'test'; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 设置字符集 $conn->set_charset("utf8"); // 查询代码 $sql = "SELECT * FROM db_table"; $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 results"; } // 关闭连接 $conn->close(); ?> ``` 4. PDO(PHP Data Objects) PDO是另一种连接多种数据库的方法,它提供了统一的接口。对于MySQL,可以使用`PDO_MYSQL`驱动: ```php <?php $host = 'localhost'; $db = 'test'; $user = 'root'; $pass = 'password'; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $pdo = new PDO($dsn, $user, $pass, $opt); // 查询代码 $sql = "SELECT * FROM db_table"; $stmt = $pdo->query($sql); foreach ($stmt as $row) { print_r($row); } ?> ``` 5. 使用PDO预处理语句 预处理语句可以防止SQL注入,提高安全性: ```php <?php $stmt = $pdo->prepare("SELECT * FROM db_table WHERE id = :id"); $stmt->bindParam(':id', $id, PDO::PARAM_INT); $id = 1; $stmt->execute(); foreach ($stmt as $row) { print_r($row); } ?> ``` 6. 使用mysqli预处理语句 同样,mysqli也支持预处理语句,提高了安全性: ```php <?php $stmt = $conn->prepare("SELECT * FROM db_table WHERE id = ?"); $stmt->bind_param("i", $id); $id = 1; $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { print_r($row); } $stmt->close(); ?> ``` 以上就是PHP连接MySQL数据库的六种常见方法。在实际开发中,推荐使用mysqli或PDO,因为它们更安全且支持预处理语句,同时提供了面向对象的编程风格。在处理用户输入时,尤其要确保使用预处理语句来防止SQL注入攻击。