php连接mysql有五种方法:一、mysqli面向过程;二、mysqli面向对象;三、pdo扩展;四、ssl加密连接;五、超时与重连机制。

如果您在PHP项目中需要与MySQL数据库进行交互,则必须先建立有效的数据库连接。以下是实现PHP连接MySQL数据库的多种方法:
一、使用mysqli扩展面向过程方式连接
mysqli扩展提供了面向过程和面向对象两种接口,面向过程方式适合简单脚本或初学者快速上手,直接调用函数完成连接操作。
1、确保PHP已启用mysqli扩展,在php.ini中确认存在extension=mysqli且未被注释。
2、在PHP文件中使用mysqli_connect()函数传入主机地址、用户名、密码、数据库名和端口(可选)参数。
立即学习“PHP免费学习笔记(深入)”;
3、检查返回值是否为false,若为false则通过mysqli_connect_error()获取错误信息并终止执行。
4、连接成功后可直接执行SQL查询,如mysqli_query(),操作完毕需调用mysqli_close()关闭连接。
二、使用mysqli扩展面向对象方式连接
面向对象方式将连接、查询、结果处理封装为类实例方法,结构更清晰,便于维护和异常控制。
1、使用new mysqli()实例化mysqli类,构造参数依次为主机、用户名、密码、数据库名、端口。
2、检查实例的connect_error属性是否为空,非空则表示连接失败,应输出connect_error内容。
3、连接成功后,可通过对象的query()、prepare()等方法执行SQL语句。
4、使用完毕后调用对象的close()方法释放连接资源。
三、使用PDO扩展连接MySQL
PDO是PHP数据对象的统一接口,支持多种数据库驱动,具有预处理语句、异常模式和事务控制等高级特性。
1、确认php.ini中已启用extension=pdo和extension=pdo_mysql。
Difeye是一款超轻量级PHP框架,主要特点有: Difeye是一款超轻量级PHP框架,主要特点有: ◆数据库连接做自动主从读写分离配置,适合单机和分布式站点部署; ◆支持Smarty模板机制,可灵活配置第三方缓存组件; ◆完全分离页面和动作,仿C#页面加载自动执行Page_Load入口函数; ◆支持mysql,mongodb等第三方数据库模块,支持读写分离,分布式部署; ◆增加后台管理开发示例
2、构造DSN字符串,格式为mysql:host=127.0.0.1;dbname=testdb;charset=utf8mb4,其中host、dbname为必填项,charset推荐显式指定。
3、调用new PDO()传入DSN、用户名、密码及可选选项数组,例如设置PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION启用异常抛出。
4、连接成功后,所有数据库操作均通过PDO实例方法进行,如query()、prepare()、beginTransaction()等。
四、使用SSL加密连接MySQL
当数据库部署在远程服务器或对安全性有更高要求时,应启用SSL加密传输,防止凭证与数据被中间人窃取。
1、确认MySQL服务器已配置有效SSL证书,并在MySQL中执行SHOW VARIABLES LIKE '%ssl%';验证have_ssl值为YES。
2、在mysqli连接时,通过mysqli_ssl_set()设置客户端证书路径,或在PDO DSN中添加&ssl_mode=REQUIRED参数。
3、连接参数中需显式启用SSL选项:mysqli方式使用mysqli_options($link, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);PDO方式在options数组中加入PDO::MYSQL_ATTR_SSL_CA、PDO::MYSQL_ATTR_SSL_CERT、PDO::MYSQL_ATTR_SSL_KEY键值对。
4、连接建立后,可通过mysqli_get_client_info()或PDO::getAttribute(PDO::ATTR_CONNECTION_STATUS)确认SSL是否激活,返回结果中应包含SSL字样。
五、处理连接超时与重连逻辑
网络不稳定或MySQL服务临时不可用可能导致连接中断,需在应用层实现基础容错机制。
1、在mysqli连接时设置连接超时,使用mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)将超时设为5秒。
2、PDO连接时可在DSN后附加&connect_timeout=5,或在options中设置PDO::ATTR_TIMEOUT => 5。
3、封装连接函数,内部捕获连接异常,若失败则等待1秒后重试,最多尝试3次,每次间隔递增。
4、重连前需判断当前连接资源是否仍有效,mysqli可用mysqli_ping()检测,PDO可用$pdo->getAttribute(PDO::ATTR_CONNECTION_STATUS),状态值为'Connection OK'才视为有效连接。










