[PHP] problema count messo in una funzione.

luigi777

Utente Attivo
14 Feb 2008
1.062
1
38
37
Massa, Italy
Salve, sto provando ad fare una classe che usa le query ora in un codice semplice ottengo questo errore:
Warning: count(): Parameter must be an array or an object that implements Countable
il mio codice è questo:
PHP:
  public function count($sql)  {
    $stmt = $this->conn->query($sql);
    return count($stmt);
  }
e questo dove lo richiamo:
PHP:
$total = $database->count("SELECT user_id FROM users;");
avendo instanziato la classe database. se volevo vi mostro il codice database class.

PHP:
<?php
class Database {
  private $conn;
  public function __construct()   {
    $database = new Config();
    $db = $database->dbConnection();
    $this->conn = $db;
  }
  public function query($sql)  {
    $stmt = $this->conn->prepare($sql);
    return $stmt;
  }
  public function count($sql)  {
    $stmt = $this->conn->query($sql);
    return count($stmt);
  }
}
avete idea cosa è quell'errore ? perché andando su internet trovo che sia un errore di php 7.2

Aspetto vostre risposte. grazie mille.
 

macus_adi

Utente Attivo
5 Dic 2017
1.034
59
48
IT/SW
public function count($sql) {
$stmt = $this->conn->query($sql);
return
count($stmt);
}
Sappi che questo modo di operare è sbagliato, se nel db ci fossero 1000000 di dati non avresti memoria per effettuare l'elaborazione....
PHP:
public function count($sql)  {
    $stmt = $this->conn->query($sql)->fetch_array(MYSQLI_ASSOC);
    return count($stmt);
  }
Sarebbe meglio optare per una cosa del genere
PHP:
public static function conta_elem($table,$field,$where=''){

$query='SELECT count('.$field.') as num FROM '.$table;
if(!empty($where))$query.=' WHERE '.$where;

return  $this->conn->query($sql)->fetch_array(MYSQLI_ASSOC)[0]['num' ];

}

$numero_elementi=Database::conta_elem('users','user_id');