Ошибка запроса данных PHP с объектом / строкой, теперь конструкция SQLite3

0

У меня есть веб-сайт.

Недавно мне пришлось расширить Sqlite3, чтобы использовать некоторые функции и определить некоторые пользовательские, но теперь у меня есть это сообщение об ошибке:

Неустранимая ошибка: исключить исключение "Исключение" с сообщением "SQLite3 :: __ construct() ожидает как минимум 1 параметр, 0 задан" строка 138

это строка 138:

$output = new functions(); $output-> bothQuery();

Мой класс, расширяющий sqlite3:

class functions extends SQLite3 {
  // Functions to sort data based on input
  public function bothQuery() { /*...*/ }
  function nameQuery() { /*...*/ }
  function cateQuery() { /*...*/ }
}

Как я могу это решить?

  • 0
    SQLite3::__construct() expects at least 1 parameter, 0 given я бы сказал, найти место, где создается объект sqlite, и дать ему параметр, который он очень четко заявляет, что хочет? вероятно, что класс, расширяющий sqlite, не создает его правильно. это может быть там: new class() . Вы можете видеть, что в круглых скобках не переданы параметры, в отличие от expects at least 1 parameter . Кроме того, где находится линия 138?
  • 0
    Спасибо за ответ. Я знаю, что это кажется довольно очевидным, но, честно говоря, я не знаю точно, чего он хочет в качестве параметра. Меня никогда не учили вызывать определенную функцию php, которая есть в таком классе, я не знаю, запрашивает ли он параметр из класса или функцию, которую я хочу вызвать. Кроме того, строка 138 находится в верхнем сегменте кода, где она говорит: $ output = new functions (); $ output-> bothQuery ();
Показать ещё 2 комментария
Теги:
sqlite3

2 ответа

1
Лучший ответ

Алеша прокомментировал:

Кроме того, строка 138 находится в верхнем сегменте кода, где говорится: $ output = new functions();

вы должны учиться на основе основных php oop tutorials, но вот проблема, с которой вы сталкиваетесь:

класс Sqlite3, похоже, имеет конструктор. Классы обычно имеют конструкторы. Иногда конструктор принимает параметры, такие как конструктор класса Sqlite3

что происходит, когда вы расширяете class functions extends SQLite3 класса class functions extends SQLite3, так как он будет использовать его родительский (то есть Sqlite3) конструктор, если он не определен в классе child (то есть функции). Конструктор Sqlite3, как мы видим из его справочной страницы, хочет в качестве первого параметра параметр (имя файла базы данных sqlite). поэтому, когда вы это делаете:

$output = new functions();

вы фактически создаете экземпляр Sqlite3, хотя он и называется функциями, потому что functions extends SQLite3. Поэтому вы должны дать ему нормальный параметр, то же самое, что вы дадите при вызове new Sqlite3()

  • 1
    Спасибо, я попробую это. Мне очень жаль, что я так растерялся, я обычно понимаю занятия на других языках, но по какой-то причине я просто не могу понять это таким же образом. Я буду продолжать это все же.
0

Я публикую этот ответ 31-1-2019, для людей, которых они просто приходят сюда, следуя миниатюре. Я также столкнулся с той же проблемой, и, наконец, я нашел решение проблемы с вашим методом construct(), вы пропустили один '_'

там у нас есть два метода конструкции()

1.__ construct(), с двумя '_', не требующими параметров

2._construct(), with one '_', который требует некоторых параметров

Ещё вопросы

Сообщество Overcoder
Наверх
Меню