我正在尝试将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
}
任何想法我做错了什么?
谢谢, 达伽兹
答案 0 :(得分:0)
我在你提供的代码部分看不到任何明显的错误,所以我建议你:
error_reporting()
设置为E_ALL
$dsn
中的参数 - 您可能想尝试从命令行进行连接... $db->debug = TRUE;
$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变量来实现此功能