SoapFault异常,调用未定义的函数

时间:2014-03-26 19:52:38

标签: php soap-client

我遇到了#soap; soapClient',日志中的错误:

[Wed Mar 26 20:23:15 2014] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined function DB() in /home/optim/DEW/task/Functions.php on line 12
[Wed Mar 26 20:23:15 2014] [error] [client 127.0.0.1] PHP Fatal error:  Uncaught SoapFault exception: [SOAP-ENV:Server] Call to undefined function DB() in /home/optim/DEW/task/client.php:6\nStack trace:\n#0 /home/optim/DEW/task/client.php(6): SoapClient->__call('getClases', Array)\n#1 /home/optim/DEW/task/client.php(6): SoapClient->getClases()\n#2 {main}\n  thrown in /home/optim/DEW/task/client.php on line 6

此代码函数 getClases()

public function getClases() {
  $query = "SELECT CLASS, COLOR FROM clases";
  $getDB = DB($query);
  return $getDB;
}

错误在:

$getDB = DB($query);

我试图包含对数据库的调用并且它有效。这是代码:

public function getClases() {
  $query = "SELECT CLASS, COLOR FROM clases";
  $host = "localhost";
  $user = "dwes";
  $db = "class";
  $pass = "123456";

  $odb = new PDO("mysql:host=".$host.";dbname=".$db, $user, $pass);
  $odb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  try {
    $resultClase = $odb->query($query);
  }
  catch (PDOException $p) {
  echo "Error ".$p->getMessage()."<br/>";
  }
  return $resultClase;
}

此应用程序在使用soap-client之前完美运行。为什么它说&#39;调用未定义的函数DB()&#39;?,问题出在哪里?。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在函数getClasses()的范围内未定义DB。 你最有可能使用PHP的“全局”。

例如。

global $odb;
$odb = new PDO("mysql:host=".$host.";dbname=".$db, $user, $pass);
$odb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

现在,在我的getClasses()函数中,我可以使用全局“odb”

public function getClases() {
  $query = "SELECT CLASS, COLOR FROM classes";
  $getDB = $odb($query);
  return $getDB;
}