PHP数据库链接不工作问题,怎么解决问题一
今天给本本装上mysql和php,一切安装都很正常(php@IIS7.5-fastCGI) 。但用phpmyadmin连接测试时却出现“#2002无法连接”的错误,用其它程序也是同样问题 。
检查了下 , php的mysql扩展正确安装,mysql服务正常启动--那就奇了怪了 。又用navicat连接,居然连上了 。。看来是php和mysql间的通讯出了问题 。
百度了一下,问题被揪出来了:
mysql_connect()函数数据库服务器(server)参数当前设置为localhost,但当其更改为127.0.0.1后又可以正常访问 。
系统hosts文件未提供127.0.0.1到localhost的解析 。
解决方法(以win7系统为例):找到C:\Windows\System32\drivers\etc\hosts文件,默认为只读 , 你需要复制一份到其他路径如桌面,打开文件(打开方式:记事本),在文件末尾添加:
127.0.0.1 localhost
如果已存在去掉其前面的“#” 。
问题二
php脚本可以正常运行,如phpinfo() 。
只要一出现“mysql_connect”函数,就没反应,也不报错 。
如 $conn = mysql_connect("127.0.0.1","root","xxxx") or die("MYSQL数据库连接失败:".mysql_error());
apache日志目录error.log中出现
PHP Warning:PHP Startup: Unable to load dynamic library 'c:\\php\\ext\\php_mysql.dll'
解决办法
将“libmysql.dll”复制到apache的bin目录下 。然后重启,观察error.log,如果错误消失,那恭喜了 。
另:网上资料也有说将““libmysql.dll””“php_mysql.dll”复制到windows/system32的 。
我的php就是和数据库无法建立连接一、常用普通方法
$mysql_server="localhost";
$mysql_username="数据库用户名";
$mysql_password="数据库密码";
$mysql_database="数据库名";
//建立数据库链接
$conn = mysql_connect($mysql_server,$mysql_username,$mysql_password) or die("数据库链接错误");
//选择某个数据库
mysql_select_db($mysql_database,$conn);
mysql_query("set names 'utf8'");
//执行MySQL语句
$result=mysql_query("SELECT id,name FROM 数据库表");
//提取数据
$row=mysql_fetch_row($result);
在提取数据的时候,我们使用mysql_fetch_row,还可以使用mysql_fetch_assoc和mysql_fetch_array,具体的我们参考手册 。
第二、面向对象方法
$db=new mysqli($dbhost,$username,$userpass,$dbdatabase);
if(mysqli_connect_error()){
echo 'Could not connect to database.';
exit;
}
$result=$db-query("SELECT id,name FROM user");
$row=$result-fetch_row();
第三、PDO方法
$dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase.';'
$dbh=new PDO($dsn,$username,$userpass);$stmt=$dbh-query('SELECT id,name FROM user');
$row=$stmt-fetch();
推荐第三种连接方式
PHP登陆注册页在本地测试时,出现连接数据库失败的情况怎么办?1、检查环境正常
使用mysql -u root -p 可以进入MySQL操作界面
直接使用/usr/local/php5/bin/php /web/test.php执行可以连上数据库
2、打开hosts加入
复制代码代码如下:127.0.0.1 qttc
使用qttc当主机连接也正常 , 唯独就不认localhost 。
3、localhost连接方式不同导致
为了了解PHP连接数据库时,主机填写localhost与其它的区别阅读了大量资料,最后得知:
当主机填写为localhost时mysql会采用 unix domain socket连接
当主机填写为127.0.0.1时mysql会采用tcp方式连接
【宝塔php连不上数据库 宝塔访问不了数据库】这是linux套接字网络的特性,win平台不会有这个问题
4、解决方法
在my.cnf的[mysql]区段里添加
复制代码代码如下:
protocol=tcp
保存重启MySQL , 问题解决!
推荐阅读
- 视频号如何直播听歌,视频号如何直播听歌曲
- ERp系统有那些模块,erp系统的各个主要模块有哪些
- 命令行如何操作mysql数据库,使用命令行方式使用mysql
- 好莱坞实战格斗家游戏下载,好莱坞拳击电影排行榜
- java关键代码怎么找 java实现的关键字
- redis单机模式服务器down了怎么办,redis单机连接数
- 显卡黑屏怎么修复,显卡黑屏怎么修复好
- b站重复进入直播间,b站怎么一直重播
- go语言豆瓣榜单 go语言书籍推荐知乎