2012-09-20 43 views
-2

我的工作对我自己的注册类,但它似乎我与PDO一个问题需要 浏览器返回这个对我说:PDO错误在注册类

Fatal error: Call to a member function query() on a non-object

我在我的数据库配置文件包含在主页上。这是如下:

<? 
    $dsn = 'mysql:dbname=magazin-online;host=localhost;'; 
    $username = 'root'; 
    $password = ''; 

    try{ 
     $pdo = new PDO($dsn, $username, $password); 
    }catch(PDOException $e){ 
     echo 'Connection failed!: '.$e->getMessage(); 
    } 

一个在注册类导致错误的行是这样的:

$pdo->query("insert into ...() ... values()); 

现在,我不要让我的注册类中的任何数据库连接,因为我已经包含了文件可以为它承担。

我该如何摆脱那个错误?

回答

0

尝试使用的exec代替query

$pdo->exec("insert into ...() ... values()); 
0

您正捕获由新PDO生成的异常,然后继续执行。

通过这样做,你必须检查的类存在,所以更改:

if($pdo) 
    $pdo->query("insert into ...() ... values()); 

但是...一个更好的办法是不是这样的严重错误后继续执行。 因此,更好地改变这样的连接:

$dsn = 'mysql:dbname=magazin-online;host=localhost;'; 
    $username = 'root'; 
    $password = ''; 

    try{ 
     $pdo = new PDO($dsn, $username, $password); 
    }catch(PDOException $e){ 
     echo 'Connection failed!: '.$e->getMessage(); 
     die; 
    } 
0

如果我理解正确,$ PDO是一个全局变量。如果要调用pdo- $>查询函数里面,你要么必须通过$ PDO连接作为一个参数或在成员函数的开头声明它作为全球

global $pdo;