Heim > Backend-Entwicklung > PHP-Tutorial > 请教为什么连不上数据库

请教为什么连不上数据库

WBOY
Freigeben: 2016-06-23 13:01:57
Original
1018 Leute haben es durchsucht


     
  /*
    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");
Nach dem Login kopieren

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

这个错误提示并不是连不上数据库。
是查询结果为空,而你没做是否有结果到判断直接就用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的答案,就是这个问题!!我新手

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage