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变量还没有在出现错误的地方实例化代码>基本上只是检查实例是否已创建?谢谢你的快速帮助!这将创建新实例(如果尚未创建),否则将返回旧实例。在这种情况下,构造函数不应该是公共的代码>基本上只是检查实例是否已创建?谢谢你的快速帮助!这将创建新实例(如果尚未创建),否则将返回旧实例。更重要的是,在这种情况下,构造函数不应该是公共的。