首页 > 后端开发 > php教程 > 请教为什么连不上数据库

请教为什么连不上数据库

WBOY
发布: 2016-06-23 13:01:57
原创
1019 人浏览过


     
  /*
    PDO属性介绍如下:
     1.PDO连接MySQL数据库 
  new PDO("mysql:host=localhost;dbname=db_demo","root",""); 
  默认不是长连接,若要使用数据库长连接,需要在最后加如下参数: 
  new PDO("mysql:host=localhost;dbname=db_demo","root","","array(PDO::ATTR_PERSISTENT => true) "); 
  2.PDO常用方法及其应用 
  PDO::query() 主要是用于有记录结果返回的操作,特别是SELECT操作 
  PDO::exec() 主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作 
  PDO::lastInsertId() 返回上次插入操作,主键列类型是自增的最后的自增ID 
  PDOStatement::fetch() 是用来获取一条记录 
  PDOStatement::fetchAll() 是获取所有记录集到一个中 
      */  
      //PDO操作数据库插入操作
    $pdo=new PDO("mysql:host=localhost;dbname=regi","root","qwert123");
    var_dump($pdo);
    if($pdo->exec("insert into username(id,member_user) values(4,'123456')")){
     echo "插入成功";
     echo $pdo->lastinsertid();
    }else{
     echo "插入失败";
    }
    //查询操作
  $pdo = new PDO("mysql:host=localhost;dbname=regi","root","qwert123"); 
  $rs = $pdo -> query("select * from num"); 
  while($row = $rs -> fetch()){ 
  print_r($row); 
  }

?>


object(PDO)#1 (0) { } 插入失败
Fatal error: Call to a member function fetch() on a non-object in E:\awangzhansheji\ilfol\reg\reg\1.php on line 29


回复讨论(解决方案)

 $pdo=new PDO("mysql:host=localhost;dbname=regi","root","qwert123");
登录后复制

如果只执行一次连接数据库操作,会不会正常呢

这个错误提示并不是连不上数据库。
是查询结果为空,而你没做是否有结果到判断直接就用fetch()获取,导致报错。

这个错误提示并不是连不上数据库。
是查询结果为空,而你没做是否有结果到判断直接就用fetch()获取,导致报错。


更正一下,是查询语句有错,比如表不存在,比如字段不存在等。

插入失败是sql语句错误,有可能是没这个表,也可能没这个字段,也有可能是已经有ID为4的,插入不进去。
查询的应该是没有num表



这是我的数据库
pbo新手,谢谢大神回答
弄了很久都没弄明白 

用这个吧~
class Pdo{
    private $instance;
    public function __construct()
    {
        $dns    = 'mysql:host=localhost;dbname=数据库;charset=utf8';
        $user   = 'root';
        $pwd    = '123456';
        $this->instance = new \PDO($dns, $user, $pwd,
                array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',
                    \PDO::ATTR_AUTOCOMMIT=>0));
    }
    public function __destruct()
    {
        // TODO: Implement __destruct() method.
        $this->instance = null;
    }
    public function query($sql){
        return $this->instance->query($sql)->fetchAll();
    }
}

用这个吧~
class Pdo{
    private $instance;
    public function __construct()
    {
        $dns    = 'mysql:host=localhost;dbname=数据库;charset=utf8';
        $user   = 'root';
        $pwd    = '123456';
        $this->instance = new \PDO($dns, $user, $pwd,
                array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',
                    \PDO::ATTR_AUTOCOMMIT=>0));
    }
    public function __destruct()
    {
        // TODO: Implement __destruct() method.
        $this->instance = null;
    }
    public function query($sql){
        return $this->instance->query($sql)->fetchAll();
    }
}






不行
Fatal error: Cannot redeclare class Pdo in E:\awangzhansheji\ilfol\reg\reg\1.php on line 4

我是加在这个里面 不行

?>



这是我的数据库
pbo新手,谢谢大神回答
弄了很久都没弄明白 



楼主,你用的这个数据库查看工具是什么名字呀

Cannot redeclare class Pdo

重复类名了。




这是我的数据库
pbo新手,谢谢大神回答
弄了很久都没弄明白 



楼主,你用的这个数据库查看工具是什么名字呀

Navicat

问题已解决,感谢Novolee的答案,就是这个问题!!我新手

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板