document.writeln('');
当前位置:首页 > 云服务器

php怎么连接数据库_MySQL数据库连接的基础代码编写【说明】

游戏科技网2026年09月14日 23:41云服务器60
推荐使用 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 连接 MySQL(推荐)

PDO 是 PHP 官方推荐的数据库访问抽象层,支持预处理、多数据库切换、异常捕获,代码更健壮。

  • 连接失败时默认静默,需手动开启 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
  • localhost 和 127.0.0.1 在某些配置下行为不同(如 Unix socket vs TCP),建议明确写 127.0.0.1 避免权限或连接超时问题
  • 密码为空或含特殊字符(如 @、/)时,必须对 $password 做 rawurlencode() 处理,否则 DSN 解析失败

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

$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 连接 MySQL(面向对象方式)

如果项目已大量使用 mysqli,优先选面向对象写法,避免过程式函数(如 mysqli_connect())带来的作用域和错误处理混乱。

word-document-organizer

智能整理Word文档,自动排版、生成目录、统一样式,支持学术/商务/极简模板。

下载
  • 连接后务必检查 $mysqli->connect_error,不能只靠返回值判断
  • 字符集必须显式设置为 utf8mb4(不是 utf8),否则 emoji 和部分生僻字会乱码或截断
  • 长连接(MYSQLI_CLIENT_FOUND_ROWS 等标志)一般不需要,除非有明确性能压测需求

1

2

3

4

5

6

7

8

9

10

11

12

13

14

$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);

常见连接失败原因与排查点

连不上不是代码写错,往往是环境或权限配置没到位。以下几项比改代码更关键:

立即学习“PHP免费学习笔记(深入)”;

  • MySQL 服务是否真在运行?用 systemctl status mysql(Linux)或 brew services list | grep mysql(macOS)确认
  • 用户权限是否包含从当前 host(如 root@127.0.0.1)登录?执行 SELECT User, Host FROM mysql.user; 查看
  • 防火墙或云服务器安全组是否放行了 3306 端口?本地测试建议先关防火墙验证
  • PHP 是否启用了 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 里忘了开扩展。写完连接代码后,先盯住错误信息里的关键词,再查对应环节。

“php怎么连接数据库_MySQL数据库连接的基础代码编写【说明】” 的相关文章

6元服务器租用,高性价比VPS主机推荐

6元服务器租用,高性价比VPS主机推荐 记得去年我刚开始创业,做了一个小型网站来展示我的产品。那时,我手头紧,预算有限,却急着需要一个可靠的服务器来托管网站。作为一个普通上班族,我对技术懂得不多,但我知道,服务器租用是必需的。我开始在网上搜索,关键词就是“6元服务器”,想找一个便宜又稳定的方案。 一开始,我以为6元服务器太便宜了,可能不靠谱。但经过一番比较,我发现确实有一些服务商提供这样的选项。这…

盘点最新优惠 云服务器网站推荐

盘点最新优惠 云服务器网站推荐 探盘最新优惠 云服务器网站推荐 云计算技术的迅猛发展,使得云服务器成为企业和个人开发者不可或缺的基础设施。云服务器,作为一种基于虚拟化技术的计算资源,允许用户按需获取计算能力、存储和网络资源,极大地提升了IT部署的灵活性和成本效益。近年来,随着数字化转型的加速,云服务器市场迎来了爆发式增长。根据Gartner的最新报告,全球公有云服务市场规模在2023年达到了497…

云服务器收费:这些套路你中招了吗?

云服务器收费:这些套路你中招了吗? 你有没有试过租用云服务器?作为一个企业主或自由职业者,我经常看到朋友或同事在谈到服务器成本时,眼睛发亮地说:“哇,云服务器真方便,弹性扩展,几乎不用操心。”但后来,他们又会苦笑着说:“哎呀,账单来了,我差点被吓晕过去!”这不奇怪,因为云服务器收费的套路,就像一场隐形的迷宫,等着你一步步走进去。今天,我们就来聊聊“云服务器怎么收费的”,帮你揭开这些层层包裹的陷阱。…

2021年最全云服务器优惠大揭秘

2021年最全云服务器优惠大揭秘 嗨,大家好,我是小明,一个普通的小白领,最近我打算自己建个网站分享旅行照片和心得。刚开始,我觉得这挺简单的,但一查资料,就陷入了云服务器的世界。哈哈,别笑,我刚开始也觉得云服务器是高科技的东西,搞得我一头雾水。不过,2021年的时候,各大云服务商推出了不少优惠套餐,让我这个新手觉得机会来了。你想知道2021年云服务器优惠套餐有哪些吗?让我来和你分享我的经历。 回想…

2021年云服务器优惠套餐活动

2021年云服务器优惠套餐活动 全球数字化转型浪潮持续深入,云计算作为新型基础设施建设的重要组成部分,其市场增长速度远超传统IT行业。根据Gartner最新发布的《中国云计算市场份额》报告显示,2020年第三季度至2021年第三季度期间,中国云计算市场规模从226亿美元增长至342亿美元,年复合增长率达30.7%。这一增长态势在2021年得到进一步巩固,各大云服务商纷纷推出优惠套餐以抢占市场份额。…

163邮箱怎么发送超大附件_163邮箱大文件中转站使用教程

163邮箱怎么发送超大附件_163邮箱大文件中转站使用教程

163邮箱发送超大文件需用大附件、云附件、网易网盘链接或压缩拆分四种方式:大附件支持单个2GB,云附件可设密码与有效期,网盘链接无大小限制,压缩拆分则适配10MB常规上限。 如果您在163邮箱中需要发送超出常规附件限制(如大于10MB)的文件,则系统将无法通过普通“添加附件”方式完成上传。此时需借助163邮箱提供的大文件中转能力,即“大附件”“云附件”或第三方网盘协同机制。以下是具体操作步骤:…