将adodb连接传递给新的php对象

时间:2009-12-13 15:55:53

标签: php mysql adodb

我正在尝试将adodb连接传递给类构造函数,但这样做会出现此错误:

mysql_error(): supplied argument is not a valid MySQL-Link resource

因此,为了将其置于上下文中,我已经实例化了一个新的adodb连接:

// establish database connection
$db = ADONewConnection($dsn);
if (!$db) die(mysql_error());

然后创建了我的新用户访问对象,并传递了adodb连接,如下所示:

$user = new UserAccess($db);

这是用户访问类的构造函数:

function UserAccess($oDbLink) {
   // check we have a valid connection
}

任何想法我做错了什么?

谢谢, 达伽兹

5 个答案:

答案 0 :(得分:0)

我在你提供的代码部分看不到任何明显的错误,所以我建议你:

  • 暂时搁置该物品
  • 将您的error_reporting()设置为E_ALL
  • 仔细检查$dsn中的参数 - 您可能想尝试从命令行进行连接...
  • 检查您的访问权限并运行FLUSH PRIVILEGES
  • 使用$db->debug = TRUE;
  • 打开ADODb调试
  • 使用$db->Execute("SELECT * FROM tablename") or die($db->ErrorMsg());
  • 从对象外部测试该事物

当您收到消息时,您的连接资源不是有效链接 - 嗯,这通常是正确的。不要忘记检查数据库是否存在并且正在运行。

答案 1 :(得分:0)

问题很可能是您尝试将PHP的mysql_ *函数与$db的{​​{1}}对象一起使用。它不是一个mysql句柄,所以它不适用于那些函数 - 你需要使用adodb自己的东西。

答案 2 :(得分:0)

您的代码与您提供的代码没有任何问题。如果你提供更多的东西,那么可以提供帮助。

是否存在传递ADODB连接的真实原因?它只需要在任何地方传递,更多的工作,没有真正的理由......我会犹豫不决。即使是标准的全局可能更好(是全局变量是邪恶的)还是单身人士类?

答案 3 :(得分:0)

您的代码应该是这样的:

// establish database connection
$db = ADONewConnection($dsn);
if ( ! $db )
{
  // just display error message
  // you cannot use mysql_error, since you haven't connected to any database
  die ("Cannot connect, check the parameter and make sure db is running!");
}

用户参考,以避免复制对象

function UserAccess(&$oDbLink) {
 // check we have a valid connection
}

希望有所帮助。

答案 4 :(得分:0)

感谢您的回答,我设法通过删除$ dsn变量并传递$ _GLOBAL变量来实现此功能