0

我正在尝试通过 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
}

任何想法我做错了什么?

谢谢, 加兹

4

5 回答 5

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
}

希望它有所帮助。

于 2010-01-31T05:00:21.323 回答
0

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

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

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

于 2009-12-13T20:58:58.713 回答
0

问题很可能是您试图将 PHP 的 mysql_* 函数与$db您从中获取的对象一起使用ADONewConnection。它不是 mysql 句柄,所以它不适用于这些功能 - 你需要使用 adodb 自己的东西。

于 2009-12-13T21:00:23.200 回答
0

从您提供的内容来看,您的代码没有问题。如果您提供更完整的东西,那么可能会有所帮助。

传递 ADODB 连接是否有真正的理由?它只需要在任何地方通过,更多的工作,没有真正的理由......我会犹豫这样做。即使是标准的全局变量也可能更好(是的全局变量是邪恶的)或者单例类?

于 2009-12-21T23:21:27.180 回答
0

感谢您的回答,我设法通过删除 $dsn 变量并仅传入 $_GLOBAL 变量来使其工作

于 2010-01-31T12:04:53.503 回答