Мое соединение проходит в классе DB.connect.php методом mysqli_connect. Как я могу исправить вызов функции mysqli_fetch_array() внутри моего цикла while?
Мой код:
class DB_Functions {
private $conn;
// constructor
function __construct() {
require_once 'DB_connect.php';
// connecting to database
$db = new Db_Connect();
$this->conn = $db->connect();
} ...
...
public function getCount($date1, $date2) {
$stmt = $this->conn->prepare("SELECT * FROM Sales WHERE date_of_sell >= ? AND date_of_sell <= ? ");
$stmt->bind_param("ss", $date1, $date2);
$stmt->execute();
$stmt->store_result();
// $count=5;
//
$count = $stmt->num_rows;
if ($stmt->num_rows > 0) {
while ($row = ???) {
$count = $count + 1;
}
}
$stmt->close();
return $count;
}
}






Если я правильно понял ваш вопрос, вы хотите вернуть количество строк после выполнения вашего запроса sql. Если это так, попробуйте это:
public function getCount($date1, $date2) {
$stmt = $this->conn->prepare("SELECT * FROM Sales WHERE date_of_sell >= ? AND date_of_sell <= ? ");
$stmt->bind_param("ss", $date1, $date2);
$stmt->execute(); // Executes a prepared Query
// Solution 1
$arr = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
if (!$arr) exit('No rows');
var_export($arr);
$stmt->close();
// Solution 2
$result = $stmt->get_result();
if ($result->num_rows === 0) exit('No rows');
$tmp = [];
while($row = $result->fetch_assoc()) {
$tmp[] = [
"field1" => $row['field1'],
"field2" => $row['field2'],
"field3" => $row['field3']
];
}
$stmt->close(); // Closes a previously opened database connection
return $tmp;
}