[英]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.