关于MySQL数据库对象的准备语句

时间:2014-03-05 10:04:51

标签: php mysqli

我是面向对象的编码方式的新手,我有以下问题。我最初编写的代码没有准备好的语句,但是现在想要实现它们。如果没有准备好的陈述,代码就能完美运行。

self :: $ tablename是表的名称。

self :: instantiate返回该表的属性数组。

public static function find_by_id($id = 0) {
    global $database;
    $sql = "SELECT * FROM " . self::$tablename . " WHERE id = ? LIMIT 1"; 
    $param = "i";
    $var = $id;
    $result_array = self::find_by_sql($sql, $param, $var);
    return !empty($result_array) ? array_shift($result_array) : false;
}

public static function find_by_sql($sql="", $param, $var) {
    global $database;
    $stmt = $database->prepare($sql);
    $stmt->bind_param($param, $var);
    $stmt->execute();
    $stmt->bind_result($result_set);
    $object_array = array();
    while ($row = $stmt->fetch($result_set)) {
        $object_array[] = self::instantiate($row);
    }
    $stmt->close();
    return $object_array;
}

我已将我的数据库对象包含为

$database = new MySQLDatabase();

print_r($ database)给出:

MySQLDatabase Object ( [_connection:private] => mysqli Object ( ) [last_query] => )

$this->_connection = mysqli::__construct(DB_SERVER, DB_USER, DB_PASS);

我的第一个问题是如何访问这个mysqli对象。

PHP.NET给出了mysqli对象的以下解释

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

如果我写它而不是$ database它可以工作。但它在$ stmt-> bind_param()失败了。

提前致谢。

编辑: PHP给了我以下错误:

Fatal error: Call to undefined method MySQLDatabase::prepare()

0 个答案:

没有答案