PHP MySQL数据库类不支持插入

PHP MySQL数据库类不支持插入,php,mysql,database,insert,Php,Mysql,Database,Insert,我一直在使用这个类: <? class DbConnector { var $theQuery; var $link; function DbConnector() { $host = 'localhost'; $db = 'my_db'; $user = 'root'; $pass = 'password'; // connect to the db $this->link = mysql_connect($host, $us

我一直在使用这个类:

<?
class DbConnector {

var $theQuery;
var $link;

function DbConnector() {

    $host = 'localhost';
    $db = 'my_db';
    $user = 'root';
    $pass = 'password';

    // connect to the db
    $this->link = mysql_connect($host, $user, $pass);
    mysql_select_db($db);
    register_shutdown_function(array(&$this, 'close'));
}

function find($query) {
    $ret = mysql_query($query, $this->link);
    if (mysql_num_rows($ret) == 0)
        return array();
    $retArray = array();

    while ($row = mysql_fetch_array($ret))
        $retArray[] = $row;

    return $retArray;
}

function insert($query) {
    $ret = mysql_query($query, $this->link);

    if (mysql_affected_rows() < 1)
        return false;
    return true;
}

function query($query) {
    $this->theQuery = $query;
    return mysql_query($query, $this->link);
}

// get some results
function fetchArray($result) {

    return mysql_fetch_array($result);
}

function close() {
    mysql_close($this->link);
}

function exists($query) {
    $ret = mysql_query($query, $this->link);
    if (mysql_num_rows($ret) == 0)
        return false;
}

function last_id($query) {
    return mysql_insert_id($query);
}

}

?>
这给了我一个错误:

Not Found

 The requested URL /horh_new/id/<br /><b>Fatal error</b>: Call to a member function        insert() on a non-object in <b>/Applications/MAMP/htdocs/horh_new/addit.php</b> on line <b>52</b><br /> was not found on this server.
它很好用。有人能告诉我我的课怎么了吗?我非常感谢。

你应该喜欢

global $db;
$db = new DbConnector();
或者更好的使用方法是

添加DbConnector类的静态函数,它将在整个请求中只创建一个实例

public static function getInstance(){
   static $instance = null;
   if($instance === null){
      $instance = new DbConnector();
   }

   return $instance;    
}
并将该类用作

$db = DbConnector::getInstance();
$db->insert($query);
你应该喜欢

global $db;
$db = new DbConnector();
或者更好的使用方法是

添加DbConnector类的静态函数,它将在整个请求中只创建一个实例

public static function getInstance(){
   static $instance = null;
   if($instance === null){
      $instance = new DbConnector();
   }

   return $instance;    
}
并将该类用作

$db = DbConnector::getInstance();
$db->insert($query);

您需要先实例化对象,然后再使用它

$db = new DbConnetor();
现在您可以进行插入

虽然我建议先添加一个_构造方法来连接数据库

class DbConnector {

  public function __construct() {
     // connect to db here

  }

您需要先实例化对象,然后再使用它

$db = new DbConnetor();
现在您可以进行插入

虽然我建议先添加一个_构造方法来连接数据库

class DbConnector {

  public function __construct() {
     // connect to db here

  }

您确定$db包含类的实例吗?也许在调用$db->insert()之前先执行$db的var_dump(),看看它是否已设置。

您确定$db包含类的实例吗?也许在调用$db->insert()之前先做一个$db的var_dump(),看看是否设置好了。

根据这个错误,我想说$db不是您所期望的。把它倒出来,你看到了什么?你的$db变量还没有被实例化,你从哪里得到了那个错误。从那个错误中,我想说$db不是你所期望的。转储它,您会看到什么?您的$db变量还没有在出现错误的地方实例化基本上只是检查实例是否已创建?谢谢你的快速帮助!这将创建新实例(如果尚未创建),否则将返回旧实例。在这种情况下,构造函数不应该是公共的基本上只是检查实例是否已创建?谢谢你的快速帮助!这将创建新实例(如果尚未创建),否则将返回旧实例。更重要的是,在这种情况下,构造函数不应该是公共的。