请教为什么连不上数据库
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制作静态网站的模板框架_PHP