Ответ на редактирование вопроса
Когда я запускаю это в браузере, я получаю select * from mytable where active=1
. Я предполагаю, что это то, что вам нужно, основываясь на вашем вопросе. Если вы хотите, чтобы активные цитировались (что может быть опечаткой в исходном вопросе), то вам нужно заменить $query="select * from mytable where active=$active_value";
на:
$query="select * from mytable where active='$active_value'";
// this will output select * from mytable where active='1'
Если вы хотите, чтобы это было логическое значение в MySQL, тогда достаточно использования 1 против 0, но вы можете разыграть:
$query="select * from mytable where active=CAST($active_value as BOOL)";
// this will output select * from mytable where active=CAST(1 as BOOL)
Оригинальный текст
Ну, во-первых, вам нужно использовать ->
вместо =
, во-вторых, вам нужно вызвать функцию:
// not: $active_value=$this=getActive;
$active_value=$this->getActive();
Пара комментариев:
- Как правило, в ООП методы обычно разбиваются на
do
, get
и set
. Имена часто бывают разные, но они всегда должны быть глаголами. inactive
и active
не совсем интуитивно понятны.
- Если у вас есть методы
getActive
и setActive
, часто полезно использовать их для изменения состояния самого объекта. Существуют исключения из соображений производительности и тому подобного, но, как правило, это хорошая идея, и она усиливает наличие этих методов. inactive
следовательно, должно быть function inactive(){ $this->setActive(1);}
- Вы почти никогда не должны назначать новую переменную заранее определенному классу. Всегда объявляйте переменные заранее, когда можете (добавьте private $ active; в строке 1 класса)
- Поскольку
$this->active
является логическим значением, то, вероятно, оно должно быть ИСТИНА или ЛОЖЬ, пока оно фактически не будет добавлено в запрос: $active_value = $this->getActive()? 1: 0;