推荐使用 PDO 或 mysqli 扩展连接 MySQL,mysql_connect() 在 PHP 7.0+ 已移除;PDO 需开启异常模式、密码特殊字符需 rawurlencode;mysqli 要显式设 utf8mb4 字符集;连接失败优先排查服务状态、用户权限、端口及扩展启用。
PHP 连接 MySQL 数据库,推荐直接使用 PDO 或 mysqli 扩展,mysql_connect() 等旧函数在 PHP 7.0+ 已被彻底移除,强行用会报 Fatal error: Uncaught Error: Call to undefined function mysql_connect()。
PDO 是 PHP 官方推荐的数据库访问抽象层,支持预处理、多数据库切换、异常捕获,代码更健壮。
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
localhost 和 127.0.0.1 在某些配置下行为不同(如 Unix socket vs TCP),建议明确写 127.0.0.1 避免权限或连接超时问题@、/)时,必须对 $password 做 rawurlencode() 处理,否则 DSN 解析失败$host = '127.0.0.1';
$port = 3306;
$dbname = 'testdb';
$username = 'root';
$password = 'p@ss/w0rd';
// 注意:密码含特殊字符时要 urlencode
$encoded_password = rawurlencode($password);
$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=utf8mb4";
try {
$pdo = new PDO($dsn, $username, $encoded_password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]);
} catch (PDOException $e) {
die('连接失败:' . $e->getMessage());
}
如果项目已大量使用 mysqli,优先选面向对象写法,避免过程式函数(如 mysqli_connect())带来的作用域和错误处理混乱。
$mysqli->connect_error,不能只靠返回值判断utf8mb4(不是 utf8),否则 emoji 和部分生僻字会乱码或截断MYSQLI_CLIENT_FOUND_ROWS 等标志)一般不需要,除非有明确性能压测需求$host = '127.0.0.1'; $port = 3306; $dbname = 'testdb'; $username = 'root'; $password = 'p@ss/w0rd'; $mysqli = new mysqli($host, $username, $password, $dbname, $port); if ($mysqli->connect_error) { die('连接失败:' . $mysqli->connect_error); } // 必须设置,且是 utf8mb4,不是 utf8 $mysqli->set_charset('utf8mb4');
连不上不是代码写错,往往是环境或权限配置没到位。以下几项比改代码更关键:
systemctl status mysql(Linux)或 brew services list | grep mysql(macOS)确认'root'@'127.0.0.1')登录?执行 SELECT User, Host FROM mysql.user; 查看3306 端口?本地测试建议先关防火墙验证pdo_mysql 或 mysqli 扩展?运行 php -m | grep -i mysql 检查Connection refused → MySQL 没启动或端口不对;出现 Access denied → 用户名/密码/Host 不匹配真正卡住的地方,往往不在 new PDO() 那一行,而在 MySQL 的 user 表里少了一条 'appuser'@'127.0.0.1' 记录,或者 php.ini 里忘了开扩展。写完连接代码后,先盯住错误信息里的关键词,再查对应环节。
# mysql
# php
# linux
# word
# 防火墙
# app
# 云服务
# access
# 端口
# mac
# unix
# macos
# 面向对象
# select
# Error
# mysqli
# pdo
# undefined
# function
# 对象
# 作用域
# 数据库
# 云服务器
相关文章:
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何在VPS电脑上快速搭建网站?
公司门户网站制作流程,华为官网怎么做?
如何获取PHP WAP自助建站系统源码?
如何登录建站主机?访问步骤全解析
linux top下的 minerd 木马清除方法
网站图片在线制作软件,怎么在图片上做链接?
已有域名和空间,如何快速搭建网站?
如何选择CMS系统实现快速建站与SEO优化?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
一键网站制作软件,义乌购一件代发流程?
网站制作公司,橙子建站是合法的吗?
如何快速登录WAP自助建站平台?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
平台云上自主建站:模板化设计与智能工具打造高效网站
大同网页,大同瑞慈医院官网?
小建面朝正北,A点实际方位是否存在偏差?
寿县云建站:智能SEO优化与多行业模板快速上线指南
智能起名网站制作软件有哪些,制作logo的软件?
建站主机功能解析:服务器选择与快速搭建指南
购物网站制作公司有哪些,哪个购物网站比较好?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
股票网站制作软件,网上股票怎么开户?
如何通过服务器快速搭建网站?完整步骤解析
已有域名和空间如何快速搭建网站?
建站主机选购指南:核心配置与性价比推荐解析
如何选择最佳自助建站系统?快速指南解析优劣
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
常州自助建站费用包含哪些项目?
浅析上传头像示例及其注意事项
如何彻底删除建站之星生成的Banner?
招贴海报怎么做,什么是海报招贴?
如何用y主机助手快速搭建网站?
建站之星如何开启自定义404页面避免用户流失?
建站之星下载版如何获取与安装?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
制作网站的软件免费下载,免费制作app哪个平台好?
如何零基础开发自助建站系统?完整教程解析
建站主机是什么?如何选择适合的建站主机?
Python lxml的etree和ElementTree有什么区别
如何用IIS7快速搭建并优化网站站点?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
已有域名能否直接搭建网站?
如何在服务器上配置二级域名建站?
宝塔建站后网页无法访问如何解决?
*请认真填写需求信息,我们会在24小时内与您取得联系。