在query()中的非对象上调用成员函数query()? [英] Call to a member function query() on a non-object in query()?
本文介绍了在query()中的非对象上调用成员函数query()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
class MySQLDatabase {
private $connection;
function __construct(){
$this->open_connection();
}
public function open_connection(){
$this->connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if(!$this->connection){
die("Database connection failed: ". mysql_error());
}
else {
$db_select = mysql_select_db(DB_NAME,$this->connection);
if(!$db_select){
die("Database connection failed: ". mysql_error());
}
}
}
public function close_connection(){
if(isset($this->connection)){
mysql_close($this->connection);
unset($this->connection);
}
}
public function query($sql){
$result = mysql_query($sql,$this->connection);
$this->confirm_query($result);
return $result;
}
public function fetch_array($result_set){
return mysql_fetch_array($result_set);
}
public function num_rows($result){
return mysql_num_rows($result);
}
public function affected_rows(){
return mysql_affected_rows($this->connection);
}
private function confirm_query($result){
if(!$result){
die("Database query failed: ". mysql_error());
}
}
}
$db = new MySQLDatabase();
这是另一位{read.php}
require_once("db.php");
class Read{
private $table_name= "real_estate";
private $column_name = "Property_type";
function __construct(){
}
public function pro_type() {
global $db;
var_dump($db);
echo "<select name='".$this->column_name."'>";
$sql = sprintf("SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '%s' AND COLUMN_NAME = '%s'",$this -> table_name,$this ->column_name);
$result = $db-> query($sql);
$row = $db->fetch_array($result);
$enumList = explode(",", str_replace("'", "", substr($row['COLUMN_TYPE'], 5, (strlen($row['COLUMN_TYPE'])-6))));
foreach($enumList as $value)
echo "<option value=$value>$value</option>";
echo "</select>";
}
}
link.php
require_once("read.php");
$link = new Read();
index.php
<?php
include '../inc/link.php';
$link -> pro_type();
?>
每件事看起来都很完美,但是它给出了一条错误消息,指出正在对非对象调用查询.我实际上在另一个脚本中调用了$ db,但似乎没有任何作用.
Every thing seems perfect, but it gives an error message saying that a query is being called on a non object. I actually called $db in another script, but nothing seems to be working.
推荐答案
其他脚本中的调用是什么样的?应该是这样的:
What does the call in your other script look like? Should be something like this:
require_once('includes/mysql.php'); // Where your MySQLDatabase class resides
if(class_exists('MySQLDatabase')) {
$db = new MySQLDatabase();
// Should work from here
$db->query("SELECT * FROM `table` WHERE 1");
} else {
die('Unable to load class.');
}
这篇关于在query()中的非对象上调用成员函数query()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文