Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tentando enumerar a quantidade de vezes que um resultado aparece, em princípio achei que era so fazer desse modo:
public function RetornarNumPermissao() {
try {
$sql = "SELECT COUNT(permissao) FROM usuario WHERE permissao = 1"; //Usuarios PAI e FILHO
$dt = $this->pdo->ExecuteQuery($sql);
$listaUsuario = [];
foreach ($dt as $cat) {
$usuario = new Usuario();
$usuario->setPermissao($cat["COUNT(permissao)"]);
$listaUsuario[] = $usuario;
}
return $listaUsuario;
} catch (PDOException $ex) {
if ($this->debug) {
echo "ERRO: {$ex->getMessage()} LINE: {$ex->getLine()}";
}
return null;
}
}
E depois chamar a função dessa forma:
<?php
foreach ($SomarClientes as $scli) {
?>
<b><?php $scli->getPermissao(); ?></b>Empresários cadastrados
</div>
<?php } ?>
Que depois ficaria tudo certo, mas não foi bem assim que funcionou.
Não teve nenhum erro no código indicado, mas também não teve nenhum resultado.
E terminei ficando meio que sem saber o que fazer....
Se alguém poder de dar uma força: - Valeu!Eu quero enumerar a quantidade de usuários que tenha determinada permissão.
Como eu não sei qual é a biblioteca que você está usando (o método ExecuteQuery não existe para PDO) fica um pouco difícil de informar qual é a forma de utilizar o comando.
Entretanto, quando você usa uma função de agregação (COUNT é uma), a sua consulta retornará apenas um registro.
Logo, quando é retornado, seria algo similar a isso:
$sql = "SELECT COUNT(permissao) as total FROM usuario WHERE permissao = 1"; //Usuarios PAI e FILHO
$dt = $this->pdo->ExecuteQuery($sql);
return $dt[0]['total'];
Visto que eu adicionei o alias "total" na consulta.Estou usando PDO e php orientado a objetos;
PDO não tem o método ExecuteQuery. Você está usando alguma biblioteca que usa PDO.
Tente fazer a alteração com o que foi mencionado logo acima e traga-nos o resultado.
Vou lhe passar a biblioteca que estou usando:
<?php
date_default_timezone_set('America/Sao_Paulo');
/**
* PDO PHP Persistence Class
* https://github.com/victortassinari/pdophpclass
*
*
* @author Victor Tassinari - victortassinarix@gmail.com
*/
class Banco {
private static $connection;
private $debug;
private $server;
private $user;
private $password;
private $database;
public function __construct() {
$this->debug = true;
$this->server = "";
$this->user = "";
$this->password = "";
$this->database = "";
}
/**
* Create a database connection or return the connection already open using Singletion Design Patern
* @return PDOConnection|null
*/
public function getConnection() {
try {
if (self::$connection == null) {
self::$connection = new PDO("mysql:host={$this->server};dbname={$this->database};charset=utf8", $this->user, $this->password);
self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
self::$connection->setAttribute(PDO::ATTR_PERSISTENT, true);
}
return self::$connection;
} catch (PDOException $ex) {
if ($this->debug) {
echo "<b>Error on getConnection(): </b>" . $ex->getMessage() . "<br/>";
}
die();
return null;
}
}
/**
* Unset connection
* @return void
*/
public function Disconnect() {
$this->connection = null;
}
/**
* Return the last id of insert statement
* @return int
*/
public function GetLastID() {
return $this->getConnection()->lastInsertId();
}
/**
* Start one database transaction
* @return void
*/
public function BeginTransaction() {
return $this->getConnection()->beginTransaction();
}
/**
* Commit changes on opened transaction
* @return void
*/
public function Commit() {
return $this->getConnection()->commit();
}
/**
* Roolback changes on opened transaction
* @return void
*/
public function Rollback() {
return $this->getConnection()->rollBack();
}
/**
* returns the result of a query (select) of only one row
* @param string $sql the sql string
* @param array $params the array of parameters (array(":col1" => "val1",":col2" => "val2"))
* @return one position array for the result of query
*/
public function ExecuteQueryOneRow($sql, $params = null) {
try {
$stmt = $this->getConnection()->prepare($sql);
$stmt->execute($params);
return $stmt->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $ex) {
if ($this->debug) {
echo "<b>Error on ExecuteQueryOneRow():</b> " . $ex->getMessage() . "<br />";
echo "<br /><b>SQL: </b>" . $sql . "<br />";
echo "<br /><b>Parameters: </b>";
print_r($params) . "<br />";
}
die();
return null;
}
}
/**
* returns the result of a query (select)
* @param string $sql the sql string
* @param array $params the array of parameters (array(":col1" => "val1",":col2" => "val2"))
* @return array for the result of query
*/
public function ExecuteQuery($sql, $params = null) {
try {
$stmt = $this->getConnection()->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $ex) {
if ($this->debug) {
echo "<b>Error on ExecuteQuery():</b> " . $ex->getMessage() . "<br />";
echo "<br /><b>SQL: </b>" . $sql . "<br />";
echo "<br /><b>Parameters: </b>";
print_r($params) . "<br />";
}
die();
return null;
}
}
/**
* returns if the query was successful
* @param string $sql the sql string
* @param array $params the array of parameters (array(":col1" => "val1",":col2" => "val2"))
* @return boolean
*/
public function ExecuteNonQuery($sql, $params = null) {
try {
$stmt = $this->getConnection()->prepare($sql);
return $stmt->execute($params);
} catch (PDOException $ex) {
if ($this->debug) {
echo "<b>Error on ExecuteNonQuery():</b> " . $ex->getMessage() . "<br />";
echo "<br /><b>SQL: </b>" . $sql . "<br />";
echo "<br /><b>Parameters: </b>";
print_r($params) . "<br />";
}
die();
return false;
}
}
}
COUNT contará a quantidade de usuários que possuem a permissão setada para 1 (true). O que exatamente você quer fazer?
Pois, o restante não tem nada haver com a quantidade de registros.