Xampp也差不多吧
php连接mysql时报错的代码:
一、报错情况
1.密码出错
( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’(using password:YES)in C:\wamp64\www\test\dbconfig.php on line 17
( ! ) PDOException:SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’(using password:YES)inC:\wamp64\www\test\dbconfig.php on line 17
2.驱动出错
( ! ) Fatal error: Uncaught PDOException: could not find driver in C:\wamp64\www\test\dbconfig.php on line 17
( ! ) PDOException:could not find driver in C:\wamp64\www\test\dbconfig.php on line 17
Php连接mysql的代码情况
1.无密码
$dsn = "MySQL:host=http://localhost;dbname=myku;charset=utf8";
$pdo = new PDO($dsn,'root','');
var_dump($pdo);
2.有密码时,密码错误。或报错驱动问题
$dsn = "MySQL:host=http://localhost;dbname=myku;charset=utf8";
$pdo = new PDO($dsn,'root','123456');
var_dump($pdo);
推荐的连接代码
$dsn = "mysql:host=localhost;dbname=myku;charset=utf8;port=3308";
$pdo = new PDO($dsn,'root','123456');
var_dump($pdo);
if($pdo){
echo "<small><font color='#7FFF00'> link OK </font><small><br/>";
}else {
echo "<small><font color='#7FFF00'> link NO </font><small><br/>";
}
正常的情况,用var_dump();测试是会返回一个对象的类型。
先来说一下PHP PDO的概念
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。
PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。
PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。
二、使用pdo的配置
1、在 Unix 系统上安装 PDO
在Unix上或Linux上你需要添加以下扩展:
extension=pdo.so
2、Windows 用户
PDO 和所有主要的驱动作为共享扩展随 PHP 一起发布,要激活它们只需简单地编辑 php.ini 文件,并添加以下扩展:
extension=pdo_mysql
设置完毕后,请重服务器
3、pdo的三种报错模式
PDO::ATTR_ERRMODE: 错误模式.
PDO::ERRMODE_SILENT:设置错误码
PDO::ERRMODE_WARNING:产生警告信息.
PDO::ERRMODE_EXCEPTION:抛出异常.
例: 将错误模式设置为抛出异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
三、构造pdo对象
1、数据库服务器名
-------------------------------------分割线-----------------------------------------------
$dsn = "mysql:host=localhost;dbname=myku;charset=utf8";
/*
数据库类型:mysql
mysql:host,主机:localhost
dbname,数据库:myku
charset,字符集:utf8
2、构造pdo对象
new PDO(数据库服务器名,用户名,密码)
例:
*/
$pdo = new PDO($dsn, 'root', '123456');
//php低于版本PHP 5.3.6设置字符集:
$pdo >exec("set names utf8");
好的,知道,了解了pdo是什么鬼东西,再来谈谈对与pdo连接失败的解决方法:
1.软件问题
wamp不是在官网下载的情况,这种情况基本上来讲是无法使用pdo的方法连接数据库的。非官方的,就重装wamp。再者就是php的版本问题,这里升级wamp就好了。
附官网:https://sourceforge.net/projects/wampserver/
2.密码出错(情况a,b,c)
a.先修改密码为空,看看是否可以连接。->在打开服务器情况下,浏览器输入http://localhost/phpmyadmin/ (localhost可以用127.0.0.1代替,别问为什么),这里登录用的是mysql不是mariaDB->账户。。。。->pdo连接
b.改wamp文件下的config.inc.php账号密码,然后pdo连接。
c.在mysql的网站页面修改密码,然后改主机名为%,全局权限和授权(一般已默认),然后用pdo连接。
3.设置开放端口号
因为,wamp是有两个数据库,设置正确的端口号并开放才可以正常访问。
//port=3308这个是wamp的mysql的默认端口号
$dsn = "mysql:host=localhost;dbname=myku;charset=utf8;port=3308";
$pdo = new PDO($dsn,'root','123456');
//再测试一下
var_dump($pdo);
4.使用mysqli_connect()语句
$conn=mysqli_connect("localhost","root","123456","myku","3308");
if($conn) {
echo 'link ok';
}else {
echo 'error';
}
注意:在测试的时候一定要确保你的数据库里是有数据的,不然会报错。