微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

骑马来的路上——PDO连接出错

好事多磨,但是连接数据库出现一些问题,有时着实令人着火。

1.确认PDO开启

PDO的开启必须在Windows环境下PHP 5.1以上版本中。

在自己的环境内新建 test.PHP文件内容如下:

<?PHP
 print PHPinfo();
?>

运行后能看见下图,便说明已经开启成功,直接转至2。

a66f0ce485655e66e80f0fe5619ec44.png

若无法运行则打开PHP.ini配置文件,找到extension=PHP_pdo.dll(配置PHP配置文件,开启相应扩展) 和extension=PHP_pdo_MysqL.dll (开启对相应数据库的扩展,以MysqL为例),去掉前面“;”的注释,修改后的两行配置内容如下:

extension=PHP_pdo.dll
extension=PHP_pdo_MysqL.dll

完成后重启apache后即可。

2.数据库连接问题

  1. 连接到 MysqL

<?PHP
   $dbh = new PDO('MysqL:host=localhost;dbname=my_database', $user, $pass);
?>

注意:如果有任何连接错误,将抛出一个 PDOException 异常对象。

b.处理连接错误

<?PHPtry {
    $dbh = new PDO('MysqL:host=localhost;dbname=my_database', $user, $pass);
    foreach($dbh->query('SELECT * from student') as $row) {
        print_r($row);
    }
    $dbh = null;} catch (PDOException $e) {
    print Error!:  . $e->getMessage() . <br/>;
    die();}
?>

3.sql语句本身有错误

<?PHP
//实例化PDO对象
$pdo = new PDO('MysqL:host=localhost;port=3306;dbname=my_database','root','root');

//写操作
$sql = delete from student;		//错误sql
$rows = $pdo->exec($sql);

//错误判定:exec方法执行结果成功也存在返回0的情况,错误会返回false,所以要判定是否是sql错误,需要判定结果为false
if(false === $rows){
    //取出错误细信息
    echo 'sql错误:<br/>';
    echo '错误代码为:' . $pdo->errorCode() . '<br/>';   
    echo '错误原因为:' . $pdo->errorInfo()[2];		
    //errorInfo返回数组,2下标代表错误具体信息          
    exit;		                                    
    //错误不需要继续执行代码
}
?>

语句问题可以通过连接数据库,通过cmd命令行或者数据库可视化软件(例如Navicat、PHPMyAdmin)确认语句问题。

推荐:php教程,php视频教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐