У меня есть это (от кого-то другого полученного из моей первой попытки в классе базы данных):MySQLi подключение к базе данных
require_once("declarations.php");
class Database{
private static $mysqli;
private static $dbName = '';
private static $username = '';
private static $password = '';
private static $host = 'localhost';
private static $prefix = '';
public function __construct(){
if(self::$host & self::$username & self::$password & self::$dbName)
{
self::$mysqli = new mysqli(self::$host, self::$username, self::$password, self::$dbName);
if (self::$mysqli->connect_error) {
die('Connect Error (' . self::$mysqli->connect_errno . ') '
. self::$mysqli->connect_error);
}
}
else
{
echo "You forgot to fill in your database connection details";
}
}
public function Query($query){
$query = self::$mysqli->real_escape_string($query);
if ($query = self::$mysqli->prepare($query)) {
$query->execute();
$query->store_result();
$stmt = $query->result;
//$query->mysql_num_rows = $stmt->num_rows();
$query->close();
return $stmt;
}
}
public function Close()
{
self::$mysqli->close();
}
}
Это, как я звоню его:
include_once("system/database.php");
$query = "SELECT * FROM app";
$dbr = new Database();
//Change this here since your method is query and not $mysqli
while($row = $dbr->Query($query)->fetch_object()){
echo '<td>'. $row['id'] . '</td>' ;
echo '<td>'. $row['title'] . '</td>' ;
}
Database::Close();
я получаю ошибка Вызов функции-члена fetch_object()
на не-объект в цикле while.
Любые идеи?
Скорее всего, ваш запрос не удался, вы предположили, что это удалось, и теперь он взорван в вашем лице. НИКОГДА не связывайте вызовы db. ** ВСЕГДА ** проверяйте ошибки на каждом этапе. Скорее всего, это связано с тем, что вы закрыли соединение с БД, и в обработчиках mysqli нет результата '->. –
Посмотрите на свою функцию 'Query()'. Он не возвращает никакого результата, если утверждение 'if' внутри не соответствует действительности. Поэтому вы не можете вызвать метод 'fetch_object()' для неопределенной переменной/объекта. – Val