簡體   English   中英

在函數內部調用ADODB?

[英]Calling ADODB inside a function?

我想知道為什么當我在函數中放置sql ADODB查詢時會產生以下錯誤:

Fatal error: Call to a member function Execute() on a non-object in -path to script-

我的功能是這樣的:

$dsn = 'mysql://user:pass@localhost/db'; 
$db = ADONewConnection($dsn);

function getem($q){
$r=$db->Execute($q);
return $r->RecordCount();
}

echo getem("select * from table");

任何想法如何解決?

可變范圍問題

您需要使用global關鍵字將$db實例導入到函數中:

function getem($q){
  global $db;

  $r=$db->Execute($q);
  return $r->RecordCount();
}

這應該夠了吧。

更多信息:

可變范圍問題

在函數內部,未定義$db的局部變量

丑陋的解決方法是使用全局

function getem($q)
{
  global $db;
  $r=$db->Execute($q);
  return $r->RecordCount();
} 

或者您可以考慮將adodb包裝為靜態類,例如

class db
{
  protected static $db;

  public static function execute($query)
  {
    if (!self::$db)  // or check object instance type
    {
      self::$db = ADONewConnection('mysql://user:pass@localhost/db');
    }

    return self::$db->execute($query);
  }
}

function getem($q)
{
  $r=db::execute($q);
  return $r->RecordCount();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM