-2

我正在处理自己的 SignUp 类,但 PDO 调用似乎有问题浏览器将其返回给我:

致命错误:在非对象上调用成员函数 query()

我将我的数据库配置包含在一个文件中,然后在主页上。如下:

   <?
   $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();
   }

SignUp 类中导致错误的行是这样的:

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

现在,我没有在我的 SignUp 类中建立任何数据库连接,因为我已经包含了对它负责的文件。

我怎样才能摆脱这个错误?

4

3 回答 3

-1

您正在捕获新 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;
   }
于 2012-09-20T14:58:01.213 回答
-1

如果我理解正确, $pdo 是一个全局变量。如果在函数内部调用 $pdo->query,则必须将 $pdo 连接作为参数传递或将其声明为全局

global $pdo;

在成员函数的开头。

于 2012-09-20T14:58:26.273 回答
-1

尝试使用exec而不是query

$pdo->exec("insert into ... () ... values ());
于 2012-09-20T14:59:46.320 回答