2017-07-17 84 views
-1

对不起,我是新来的,你能帮我解疑吗?查询()函数PDO

我的query()函数有什么问题? PDO有问题吗?

banco.php

<?php 
    class Banco { 
     private $pdo; 

     public function __construct($host,$dbname,$dbuser,$dbpass){ 
      try { 
       $this->pdo = new PDO("mysql:dbname=".$dbname.";host=".$host."",$dbuser,$dbpass); 
      } catch (PDOException $e) { 
       echo "Conexao falhou".$e->getMessage(); 
      } 
     } 

     public function query($sql) { 
      $this->pdo->query($sql); 
     } 
    } 
?> 

的index.php

<?php 
    require 'banco.php'; 
    $banco = new Banco("127.0.0.1","test","root",""); 

    $projeto = $banco->query("SELECT * FROM projetos") ; 

    $dado = $projeto->fetch(); 

    print_r($dado); 

?> 
+0

日志中是否有任何错误? –

+0

在使用之前,您应该始终检查连接是否正常。这是在构造函数中建立连接的一个问题 - 您无法立即检查它是否有效。 –

回答

1

改变你的代码是这样的:(你忘了 “返回”)

public function query($sql) { 
    return $this->pdo->query($sql); 
} 
+0

致命错误 - 调用第10行中的/Applications/XAMPP/xamppfiles/htdocs/index.php中的非对象的成员函数fetch() –

0

一些快速增强功能:

class Banco { 
private $pdo; 
public function __construct($host,$dbname,$dbuser,$dbpass){ 
    try { 
     $this->pdo = new PDO("mysql:dbname=".$dbname.";host=".$host."",$dbuser,$dbpass); 
    } catch (PDOException $e) { 
     echo "Conexao falhou".$e->getMessage(); 
     } 
} 
public function query($sql) { 
    return $this->pdo->query($sql); 
} 
} 

$banco = new Banco("127.0.0.1","test","root",""); 

$projeto = $banco->query("SELECT * FROM projetos") ; 
$dado = $projeto->fetch(); 
print_r($dado); 

?> 

如果PDO语句返回FALSE,这意味着查询失败。即如果这条线$banco->query("SELECT * FROM projetos");是不是一个正确的查询(可以有很多原因),它会给你

调用一个成员函数取()非对象

。如果你想让我们真的对你有帮助,你应该上传数据库结构。