PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

请教为什么连不上数据库

原创
2016-06-23 13:01:57 777浏览



/*
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的答案,就是这个问题!!我新手

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。