首頁 > 後端開發 > php教程 > 请教为什么连不上数据库

请教为什么连不上数据库

WBOY
發布: 2016-06-23 13:01:57
原創
1030 人瀏覽過


     
  /*
    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
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板