我在尝试访问我的mysql类中的某些函数时遇到问题。我有连接到我的数据库的功能如下:mysql_connect问题,资源类型'未知'
function connect_DB() {
$this->connection = mysql_connect($this->dbURL, $this->dbUser, $this->dbPass) or trigger_error('Connection failed: ' . mysql_error($connection), E_USER_ERROR);
$this->db = mysql_select_db($this->dbName, $this->connection) or trigger_error('Database selection failed: ' . mysql_error($db), E_USER_ERROR);
}
而且我用这个创造我的MySQL对象:
$dbConf = new StoreConfDB();
$dbConf->connect_DB();
现在我有一个应该抓住所有的列的功能来自指定表的名称。代码:
function get_db_columns($table) {
global $dbConf;
print_r($dbConf->get_db());
$result = $dbConf->query_DB_resource('SELECT * FROM ' . $table);
for($i = 0; $i < mysql_num_fields($result); $i++) {
$meta = mysql_fetch_field($result, $i);
$fields[] = $meta->name;
}
mysql_free_result($result);
return $fields;
}
但我收到错误,如:
Warning: mysql_query(): 5 is not a valid MySQL-Link resource
如果我尝试从的mysql_query呼叫删除连接参数我得到这个:
Notice: Could not run query: No database selected in ...
现在我正在运行一个调试器,并指出了问题所在(我认为)。当类的工作,连接变量设置为:resource id='5' type='mysql link'
但是,当它从get_db_columns()
函数内部调用在mysql类的查询功能的连接变量是:resource id='5' type='Unknown'
于是莫名其妙的连接变量得到弄糟即使两个连接变量应该是相同的东西? (从$dbConf
)?我已经在2个不同的地方测试了这个功能,它在一个而不是另一个中工作!请帮忙!
@footy:
在$ dbConf一个print_r的返回:
StoreConfDB Object ([dbURL] => localhost [dbUser] => root [dbPass] => [dbName] => db1 [connection] => Resource id #5 [db] => 1)
的query_DB_resource功能:
function query_DB_resource($query) {
$sql_query = mysql_query($query) or trigger_error('Could not run query: '. mysql_error());
return $sql_query;
}
您确定$ dbConf变量是否在您调用* get_db_columns($ table)*函数之前被初始化*。对于更安全的方法,将数据库连接放在构造器中,以确保每次连接到数据库连接 – footy
也可以发布* query_DB_resource *函数。这可能是一个错误。更好的是,将整个页面放在这里,以便让人们更轻松地获得全面的外观。 – footy