предложения не работают, потому что они предназначены для стандартного драйвера mysql, а не для mysqli,
$this->db_link->error
содержит ошибку, если это произошло
или
mysqli_error($this->db_link)
будет работать
setLoanItem - это метод экземпляра, то есть вам нужен экземпляр класса Media для его вызова. Вы пытаетесь вызвать его по самому типу Media.
Возможно, вам захочется ознакомиться с некоторыми базовыми объектно-ориентированными учебниками, чтобы узнать, как работают члены static / instance.
setLoanItem()
не является статическим методом, это метод экземпляра, что означает, что он принадлежит определенному экземпляру этого класса, а не самому классу.
По сути, вы не указали какой медиа-объект вы хотите вызвать метод, вы указали только имя класса. Могут существовать тысячи медиа-объектов, и компилятор не знает, что вы имели в виду, поэтому он генерирует ошибку соответственно.
Вероятно, вы захотите передать медиа-объект, на котором вызывается метод:
public void loanItem(Media m) {
m.setLoanItem("Yes");
}
Методы экземпляров необходимо вызывать из экземпляра. Ваш метод setLoanItem
является методом экземпляра (он не имеет модификатора static
), который должен быть для того, чтобы функционировать (поскольку он устанавливает значение для экземпляра, на который он вызван (this
), ). Вам нужно создать экземпляр класса, прежде чем вы сможете вызвать метод на нем:
Media media = new Media();
media.setLoanItem("Yes");
(Btw было бы лучше использовать логическое значение вместо строки, содержащей «Да».)
Вам нужно правильно отделить статические данные от данных экземпляра. В вашем коде onLoan
и setLoanItem()
являются членами экземпляра. Если вы хотите ссылаться / называть их, вы должны сделать это через экземпляр. Таким образом, вы либо хотите
public void loanItem() {
this.media.setLoanItem("Yes");
}
, либо
public void loanItem(Media object) {
object.setLoanItem("Yes");
}
в зависимости от того, как вы хотите передать этот экземпляр.