wamp下用php的pdo来连接mysql出错时解决办法

1 篇文章 0 订阅

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();测试是会返回一个对象的类型。

pdo

先来说一下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连接。
paw
c.在mysql的网站页面修改密码,然后改主机名为%,全局权限和授权(一般已默认),然后用pdo连接。

user
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';
}

注意:在测试的时候一定要确保你的数据库里是有数据的,不然会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值