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