Я передаю запрос SQL через функцию, которая возвращает количество результатов запроса SELECT. Результатом является правильный счетчик для метода mysqli_num_rows (), но он не устанавливает переменную счетчика равной этому числу и вместо этого сохраняет счетчик равным своему первоначальному значению.
public function getNum($sql){
$count = 0; //set the count variable
if($result = $this->query($sql)){
//echo 'No results for criteria';
$count = mysqli_num_rows($result); //count is properly set to number
} //does not modify outside count variable
return $count; //returning 0 or whatever count was originaly set to
} //count does not change despite $count inside the if statement being changed
Вот что такое запрос $ this->
public function __construct(){
$this->mysqli = new mysqli('localhost', 'root', '', 'mydb');
}
public function query($sql){
return $this->mysqli->query($sql);
}
Я точно знаю, что запрос выполняется. Проблема в том, что переменная не изменяется для возврата.
Как я понимаю у вас проблема, вы хотите установить переменную $count
внутри функции, но вы должны знать, что переменные внутри функций не могут быть доступны снаружи, и наоборот, это из-за переменная область в PHP.
Вы можете попробовать это:
var $count;
function set_count($new_value) {
$this->count = $new_value;
}
function get_count() {
return $this->count;
}
public function getNum($sql){
$count = 0; //set the count variable
if($result = $this->query($sql)){
$count = mysqli_num_rows($result);
}
//set `$count`
$this->set_count($new_value);
return $count;
}
//and if you want to get the count
echo $this->get_count();
Других решений пока нет …