跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
PHP MySQL连接
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= PHP MySQL连接 = == 介绍 == PHP与MySQL的连接是Web开发中最基础且重要的技术之一,它允许PHP脚本与MySQL数据库进行交互,实现数据的存储、查询、更新和删除。MySQL是一种流行的关系型数据库管理系统(RDBMS),而PHP提供了多种方式与其建立连接,包括原生的`mysql_*`函数(已弃用)、`mysqli`扩展和`PDO`(PHP Data Objects)。本文将重点介绍`mysqli`和`PDO`这两种现代且安全的方法。 == 连接方式 == PHP提供了两种主要的MySQL连接方式: === 1. MySQLi (MySQL Improved) === MySQLi是PHP的扩展,支持面向对象和面向过程的编程风格,并提供了预处理语句(prepared statements)以增强安全性。 ==== 面向对象方式 ==== <syntaxhighlight lang="php"> <?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?> </syntaxhighlight> ==== 面向过程方式 ==== <syntaxhighlight lang="php"> <?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database"; // 创建连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检查连接 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } echo "连接成功"; ?> </syntaxhighlight> === 2. PDO (PHP Data Objects) === PDO是一个数据库抽象层,支持多种数据库(如MySQL、PostgreSQL等),并提供统一的API。它同样支持预处理语句。 <syntaxhighlight lang="php"> <?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // 设置PDO错误模式为异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "连接成功"; } catch(PDOException $e) { echo "连接失败: " . $e->getMessage(); } ?> </syntaxhighlight> == 连接参数说明 == 以下是连接MySQL时常用的参数: * '''host''':数据库服务器地址(如`localhost`或IP地址)。 * '''username''':数据库用户名。 * '''password''':数据库密码。 * '''database''':要连接的数据库名称。 * '''port'''(可选):MySQL服务器端口,默认为3306。 == 连接生命周期 == <mermaid> graph TD A[创建连接] --> B[执行SQL查询] B --> C[处理结果] C --> D[关闭连接] </mermaid> == 实际应用案例 == 假设我们有一个用户注册系统,需要将用户输入的数据存储到MySQL数据库中。 === 使用MySQLi预处理语句 === <syntaxhighlight lang="php"> <?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "users"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 准备SQL语句 $stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (?, ?)"); $stmt->bind_param("ss", $username, $email); // 设置参数并执行 $username = "john_doe"; $email = "john@example.com"; $stmt->execute(); echo "新记录插入成功"; $stmt->close(); $conn->close(); ?> </syntaxhighlight> === 使用PDO预处理语句 === <syntaxhighlight lang="php"> <?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "users"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 准备SQL语句 $stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (:username, :email)"); $stmt->bindParam(':username', $username); $stmt->bindParam(':email', $email); // 设置参数并执行 $username = "john_doe"; $email = "john@example.com"; $stmt->execute(); echo "新记录插入成功"; } catch(PDOException $e) { echo "错误: " . $e->getMessage(); } $conn = null; ?> </syntaxhighlight> == 安全性注意事项 == * 始终使用预处理语句来防止SQL注入攻击。 * 不要在代码中硬编码数据库凭据,应使用环境变量或配置文件。 * 在生产环境中关闭错误显示,避免泄露敏感信息。 == 性能优化 == * 使用持久连接(如`mysqli`的`mysqli_pconnect`或PDO的`PDO::ATTR_PERSISTENT`)以减少连接开销。 * 及时关闭连接以释放资源。 == 常见问题 == === 连接失败的可能原因 === 1. 数据库服务器未运行。 2. 用户名或密码错误。 3. 数据库名称拼写错误。 4. 防火墙阻止了连接。 === 如何调试连接问题 === * 检查MySQL服务器日志。 * 使用`mysqli_connect_error()`或`PDOException`获取详细错误信息。 == 总结 == PHP与MySQL的连接是动态网站开发的核心技术之一。通过`mysqli`和`PDO`,开发者可以安全高效地与数据库交互。预处理语句的使用是防止SQL注入的关键,而正确的连接管理(如及时关闭连接)有助于提升性能。 [[Category:编程语言]] [[Category:PHP]] [[Category:PHP数据库操作]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)