1. Никогда не вставляйте код подключения к базе данных в скрипт. Вы должны выработать для себя как аксиому. Это Singleton одиночка должны быть во всех ваших проектах.
2. close используется когда надо принудительно закрыть соединение, действие происходит автоматически
3. ид в таблицах обычно инкремент, так что ORDER BY `id` DESC' лишнее
Мой вариант
<?php
//file dbConnect.php
class DbConnect
{
private static $instance = null;
final private function __construct(){}
final private function __clone(){}
public static function getInstance()
{
if (!self::$instance) {
if (!function_exists('mysqli_connect')) {
die('Адаптер MySQL mysqli не доступен');
}
self::$instance = mysqli_connect(
HOSTNAME,
USERNAME,
PASSWORD,
DBNAME
) or die("Не удалось подключиться к MySQL: ("
. self::$instance->connect_errno . ") "
. self::$instance->connect_error);
mysqli_set_charset(self::$instance, "utf8");
}
return self::$instance;
}
}
class DbFunction
{
private $db;
public function __construct()
{
$this->db = DbConnect::getInstance();
}
public function load_table($table)
{
$resultArray = array();
if ($result = $this->db->query("SELECT * FROM $table")) {
while ($row = $result->fetch_array(MYSQL_ASSOC)) {
$resultArray[] = $row;
}
}
return $resultArray;
}
}
Используем
require_once "db.config.php"; // в нем задаем HOSTNAME, USERNAME, PASSWORD, DBNAME
require_once "dbConnect.php";
$db = new DbFunction();
$songs= $db->load_table("songs");
echo json_encode($songs);
die; //прекращаем работу