Загрузите данные MySQL с помощью PHP, но результат имеет неправильный формат

#php #mysql

#php #mysql

Вопрос:

В моем приложении я хочу загрузить все типы резервирования в a <select> с помощью PHP. Reservationtype имеет 2 параметра (reservationtypeid, reservierungart). Я использую класс базы данных с этого сайта для упрощения команд SQL.

ReservationtypeModel

 class Reservierungstyp
{
    public function __construct($reservationtypeid, $reservierungsart){
        $this->$reservationtypeid = $reservationtypeid;
        $this->$reservierungsart = $reservierungsart;
    }
}
  

В моей ReservationtypeModel я использую этот метод getAllReservationtypes:

 public function getAllReservierungstypen(){
    $db = new Database();
    $results = $db->query('SELECT * FROM reservationtype')->fetchAll();
    $rows = count($results);
    $db->close();

    $typesArray = array();

    if($rows > 0){
        foreach($results as $res){
            $r = new Reservierungstyp($res['reservationtypeid'], $res['reservierungsart']);
            $typesArray[] = $r;
        }
    }else{
        return null;
    }
    return $typesArray;
}
  

Результаты имеют такой формат:

 Reservierungstyp Object ( [1] => 1 [Training] => Training ) )
  

Но разве это не должно быть что-то вроде этого?

 Reservierungstyp Object ( [reservationtypeid] => 1 [reservierungart] => Training ) )
  

Я не знаю, какая ошибка может вызвать эту ошибку. Если в моем коде есть другая ошибка, пожалуйста, дайте мне знать, я просто думаю, что этот ложный формат является причиной ошибки

Комментарии:

1. если что-то возвращает Object, это не JSON

2. Тогда в чем проблема? Я просто подумал, что это была проблема с json, извините за неправильную аннотацию.

3. действительно сложно сказать, поскольку вы не даете нам определение класса Reservierungstyp

4. @FlashThunder я добавляю это прямо сейчас

5. хорошо, тогда это не имеет ничего общего с JSON, вам также нужно указать схему таблицы вашей базы данных

Ответ №1:

Я думаю, что ваш класс должен быть:

 class Reservierungstyp
{
    private $reservationtypeid;
    private $reservierungsart;

    public function __construct($reservationtypeid, $reservierungsart){
        $this->reservationtypeid = $reservationtypeid;
        $this->reservierungsart = $reservierungsart;
    }
}
  

Обратите внимание на назначение __construct . Вы использовали $this->$reservationtypeid (доллар перед атрибутом класса), что означает, что вы ожидаете переменную, которая в данном случае действительно является параметрами конструктора.