2017-07-17 82 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");是不是一個正確的查詢(可以有很多原因),它會給你

調用一個成員函數取()非對象

。如果你想讓我們真的對你有幫助,你應該上傳數據庫結構。