下面是一篇针对新手的数据库操作教程,我们将分别介绍如何使用PDO(PHP Data Objects)和MySQLi扩展来连接和操作MySQL数据库。这两种方法都是PHP中常用的数据库操作方式,PDO更加现代和灵活,而MySQLi则提供了面向过程和面向对象两种API。
使用PDO扩展进行数据库操作
1. 安装与配置
PDO是PHP的内置扩展,通常默认启用。如果未启用,可以在php.ini
文件中找到并取消注释以下行:
ini extension=pdo_mysql
2. 创建数据库连接
php <?php try { $dsn = 'mysql:host=your_host;dbname=your_dbname;charset=utf8mb4'; $username = 'your_username'; $password = 'your_password'; $pdo = new PDO($dsn, $username, $password); // 设置错误模式为异常 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "连接成功"; } catch (PDOException $e) { echo "连接失败: " . $e->getMessage(); } ?>
3. 执行查询
查询数据
php <?php try { $stmt = $pdo->query("SELECT * FROM your_table"); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($results as $row) { echo $row['column_name'] . "<br>"; } } catch (PDOException $e) { echo "查询失败: " . $e->getMessage(); } ?>
插入数据
php <?php try { $stmt = $pdo->prepare("INSERT INTO your_table (column1, column2) VALUES (:value1, :value2)"); $stmt->bindParam(':value1', $value1); $stmt->bindParam(':value2', $value2); $value1 = 'example1'; $value2 = 'example2'; $stmt->execute(); echo "插入成功"; } catch (PDOException $e) { echo "插入失败: " . $e->getMessage(); } ?>
更新数据
php <?php try { $stmt = $pdo->prepare("UPDATE your_table SET column1 = :value1 WHERE column2 = :value2"); $stmt->bindParam(':value1', $newValue1); $stmt->bindParam(':value2', $conditionValue); $newValue1 = 'new_value'; $conditionValue = 'condition_value'; $stmt->execute(); echo "更新成功"; } catch (PDOException $e) { echo "更新失败: " . $e->getMessage(); } ?>
删除数据
php <?php try { $stmt = $pdo->prepare("DELETE FROM your_table WHERE column1 = :value"); $stmt->bindParam(':value', $value); $value = 'value_to_delete'; $stmt->execute(); echo "删除成功"; } catch (PDOException $e) { echo "删除失败: " . $e->getMessage(); } ?>
使用MySQLi扩展进行数据库操作
1. 安装与配置
MySQLi扩展也是PHP的内置扩展,通常默认启用。如果未启用,可以在php.ini
文件中找到并取消注释以下行:
ini extension=mysqli
2. 创建数据库连接
面向对象方式
php <?php $mysqli = new mysqli("your_host", "your_username", "your_password", "your_dbname"); if ($mysqli->connect_error) { die("连接失败: " . $mysqli->connect_error); } echo "连接成功"; ?>
面向过程方式
php <?php $mysqli = mysqli_connect("your_host", "your_username", "your_password", "your_dbname"); if (!$mysqli) { die("连接失败: " . mysqli_connect_error()); } echo "连接成功"; ?>
3. 执行查询
查询数据
面向对象方式
php <?php $result = $mysqli->query("SELECT * FROM your_table"); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo $row['column_name'] . "<br>"; } } else { echo "0 结果"; } $result->close(); ?>
面向过程方式
php <?php $result = mysqli_query($mysqli, "SELECT * FROM your_table"); if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { echo $row['column_name'] . "<br>"; } } else { echo "0 结果"; } mysqli_free_result($result); ?>
插入数据
面向对象方式
php <?php $stmt = $mysqli->prepare("INSERT INTO your_table (column1, column2) VALUES (?, ?)"); $stmt->bind_param("ss", $value1, $value2); $value1 = 'example1'; $value2 = 'example2'; if ($stmt->execute()) { echo "插入成功"; } else { echo "插入失败: " . $stmt->error; } $stmt->close(); ?>
面向过程方式
php <?php $stmt = mysqli_prepare($mysqli, "INSERT INTO your_table (column1, column2) VALUES (?, ?)"); mysqli_stmt_bind_param($stmt, "ss", $value1, $value2); $value1 = 'example1'; $value2 = 'example2'; if (mysqli_stmt_execute($stmt)) { echo "插入成功"; } else { echo "插入失败: " . mysqli_stmt_error($stmt); } mysqli_stmt_close($stmt); ?>
更新和删除数据的操作与插入数据类似,只需更改SQL语句即可。
总结
- PDO 提供了更高级别的抽象和更好的错误处理机制,适合大多数现代PHP应用。
- MySQLi 提供了两种API(面向对象和面向过程),适合那些希望更直接控制数据库操作的用户。
文章教程由269安卓网收集整理:https://www.0269.net/提供详细教程,希望这篇教程能帮助你快速上手PHP中的数据库操作!