PHP连接数据库的常见方法有哪些
在PHP中,连接数据库其实没那么复杂,主要有几种方式可以选择:
-
MySQLi扩展(过程化与面向对象)
- 过程化:使用mysqli_connect(),传入服务器名、用户名、密码和数据库名,接着用mysqli_query()执行SQL语句,最后用mysqli_close()关闭连接。
- 面向对象:通过$conn = new mysqli('服务器名','用户名','密码','数据库名');创建连接,调用$conn->query()执行语句。 -
PDO(PHP Data Objects)扩展
这是个更灵活且安全的方式,支持多种数据库,只要换数据源名称(DSN)就行。使用时创建new PDO()对象,然后用prepare()和execute()方法执行查询。 -
远程数据库连接
超简单!只要把localhost或者127.0.0.1换成远程服务器的IP或域名即可。当然,远程数据库要允许外网访问,并且对应的端口开放,这点非常重要。 -
持久连接
有两种常用连接方式:mysql_connect()和mysql_pconnect(),后者是持久连接,会在请求结束后保持连接不关闭,下次请求可重用连接资源,能提升性能。不过,这也可能带来连接数过多的问题,所以用的时候要斟酌。
总的来说,不同场景可以选择不同方式,MySQLi和PDO更适合现代开发,mysql_*系列主要是老版本PHP里用的。

PHP连接数据库时常见的问题有哪些以及怎么解决
说真的,入门PHP连接MySQL时,那些坑真不少,踩过才能长记性哈!以下是几个比较“常客”的问题:
-
“Call to undefined function mysql_connect”错误
- 原因:php.ini文件里没启用php_mysql.dll扩展,或者路径没配对。
- 解决:去掉extension=php_mysql.dll前面的分号(即取消注释),或者把php.ini复制一份到C:\Windows目录下。别忘了重启服务器! -
连接不上数据库
- 检查参数是否写错,尤其是数据库名、用户名、密码和主机名。
- 确认数据库服务已经启动。
- 如果是远程连接,确认防火墙和数据库权限已放行。 -
未开启mysqli或pdo扩展
- 使用phpinfo()看看有没有相关扩展,有的话就放心用,没有就得去php.ini开启。 -
编码问题导致乱码
- 有时查询结果出来全是乱码,别急,调用连接对象的set_charset('utf8')就能搞定。 -
未指定数据库导致连接失败
- 面向过程方式:连接后可用mysqli_select_db()选择数据库。
- 面向对象方式:构造函数中传入数据库名,或者后续用$conn->select_db()。
了解了这些,遇坑就不怕啦,代码能通畅运行!

相关问题解答
-
PHP连接数据库时到底应该用MySQLi还是PDO呢?
哎,这个嘛,其实两者各有千秋啦!MySQLi比较轻量,有面向对象也有过程化方式,入门简单;PDO更酷,更灵活,支持多种数据库,安全性和功能也更强。要是我,我会根据项目需求选择,但如果想未来更好扩展,PDO是个不错的选择哦! -
如果我想用持久连接,是不是就不会断开数据库了?
持久连接确实会让连接保持活跃,不会在脚本执行完后马上断开,节省重新连接的开销。但也别太开心,因为这可能导致连接累积过多,服务器压力山大,容易出错。用持久连接之前,最好确认服务器配置和应用场景真的需要,再用也不迟。 -
遇到“Call to undefined function mysql_connect”怎么办?
嘿,这个错误其实挺常见的,99%就是因为PHP配置文件php.ini没打开MySQL扩展,或者路径不对。你只需找到extension=php_mysql.dll这一行,去掉前面的分号,然后重启服务器。还要保证php.ini被加载了,特别是复制到C:\Windows目录后,有时容易忘。 -
怎么判断我的PHP环境有没有开启mysqli或者pdo扩展?
超简单!在PHP脚本里写一句phpinfo();然后访问那个文件,页面中搜搜“mysqli”或者“pdo”,看到信息就说明开启啦。没看到?赶紧编辑php.ini,找对应扩展把它打开,重启服务器准没错。放心,这步根本不困难!
发表评论