Iniciante no MySQLi
Bom dia para todos, estou migrando os meus projetos de mysql para mysqli,e depois de alguns estudos cheguei em um modelo que eu montei que é fácil de trabalhar, pelo menos pra mim né...
Tenho uma classe que faz a conexão com o banco:
<?php
/ ESTE ARQUIVO FAZ A CONEXÃO COM O BANCO DE DADOS /
//DADOS DA CONEXÃO
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', 'root');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'interno');
class Conn{
protected $conn;
function __construct() {
$this->conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (mysqli_connect_errno())trigger_error(mysqli_connect_error());
}
// function __destruct() {
// mysqli_close($this->conn);// }
}
?>
Depois tenho as classes para fazer os inserts e qlqr outros comando SQL, de cada tabela:
<?php
//CHAMO A CLASSE QUE FAZ A CONEXÃO COM O BANCO DE DADOS
include_once 'conexao.class.php';
class Produtos extends Conn{
public function insert($rNome,$rQtde,$rQtdeMin,$rQtdeMax,$rDepositoId,$rUnidadeId,$rGrupoId,$rCodFornec,$rEpi,$rProtocolo){
//COMANDO SQL
$rData_cad=date('Y-m-d');
$rNome = mysqli_real_escape_string($this->conn,$rNome);
$rQtde = mysqli_real_escape_string($this->conn,$rQtde);
$rQtdeMin = mysqli_real_escape_string($this->conn,$rQtdeMin);
$rQtdeMax = mysqli_real_escape_string($this->conn,$rQtdeMax);
$rDepositoId = mysqli_real_escape_string($this->conn,$rDepositoId);
$rUnidadeId = mysqli_real_escape_string($this->conn,$rUnidadeId);
$rGrupoId = mysqli_real_escape_string($this->conn,$rGrupoId);
$rCodFornec = mysqli_real_escape_string($this->conn,$rCodFornec);
$rEpi = mysqli_real_escape_string($this->conn,$rEpi);
$rProtocolo = mysqli_real_escape_string($this->conn,$rProtocolo);
$rSql="INSERT INTO produtos (nome,data_cad,qtde,qtde_min,qtde_max,deposito_id,unidade_id,grupo_id,cod_fornec,epi,protocolo) VALUES (?,?,?,?,?,?,?,?,?,?,?)";
$sql = $this->conn->prepare($rSql);
$sql->bind_param('sssssssssss', $rNome,$rData_cad,$rQtde,$rQtdeMin,$rQtdeMax,$rDepositoId,$rUnidadeId,$rGrupoId,$rCodFornec,$rEpi,$rProtocolo);
//EXECUTA O COMANDO SQL
$ret = $sql->execute();
if ($ret){
Logger('Usuario:['.LOGIN.'] - Inseriu Produto');
}else{
Logger('Usuario:['.LOGIN.'] - ERRO:['. mysqli_error($this->conn).']');
}
return $ret;
}
public function selectUM($rComplemento=""){
$rSql = "SELECT pro.*,prc.*, uni.nome AS nome_unidade, dep.nome as nome_deposito,grp.nome AS nome_grupo "
. "FROM produtos pro "
. "LEFT JOIN unidades uni ON uni.id=pro.unidade_id "
. "LEFT JOIN pro_prc prc ON prc.produto_id=pro.id "
. "LEFT JOIN depositos dep ON dep.id=pro.deposito_id "
. "LEFT JOIN grupos grp ON grp.id=pro.grupo_id ". $rComplemento;
$result = $this->conn->query($rSql);
if (mysqli_num_rows($result)===1){
$reg = mysqli_fetch_assoc($result);
$rObj = new Produtos();
$rObj->id = $reg["id"];
$rObj->nome = $reg["nome"];
$rObj->data_cad = $reg["data_cad"];
$rObj->unidade_id = $reg["unidade_id"];
$rObj->nome_unidade = $reg["nome_unidade"];
$rObj->deposito_id = $reg['deposito_id'];
$rObj->nome_deposito = $reg['nome_deposito'];
$rObj->qtde = tiraPontoVirgula($reg['qtde']);
$rObj->qtde_min = tiraPontoVirgula($reg['qtde_min']);
$rObj->qtde_max = tiraPontoVirgula($reg['qtde_max']);
$rObj->cod_fornec = $reg['cod_fornec'];
$rObj->dt_ult_cust1 = formataData($reg['dt_ult_cust1']);
$rObj->ult_cust1 = formataMoeda($reg['ult_cust1']);
$rObj->fornec_id1 = $reg['fornec_id1'];
$rObj->dt_ult_cust2 = formataData($reg['dt_ult_cust2']);
$rObj->ult_cust2 = formataMoeda($reg['ult_cust2']);
$rObj->fornec_id2 = $reg['fornec_id2'];
$rObj->dt_ult_cust3 = formataData($reg['dt_ult_cust3']);
$rObj->ult_cust3 = formataMoeda($reg['ult_cust3']);
$rObj->fornec_id3 = $reg['fornec_id3'];
$rObj->epi = $reg['epi'];
$rObj->grupo_id = $reg['grupo_id'];
$rObj->nome_grupo = $reg['nome_grupo'];
$rObj->protocolo = $reg['protocolo'];
$rRetorno = $rObj;
}
return $rRetorno;
}
public function select($rComplemento=""){
$rSql = "SELECT pro.*,prc.*, uni.nome AS nome_unidade, dep.nome as nome_deposito,grp.nome AS nome_grupo "
. "FROM produtos pro "
. "LEFT JOIN unidades uni ON uni.id=pro.unidade_id "
. "LEFT JOIN pro_prc prc ON prc.produto_id=pro.id "
. "LEFT JOIN depositos dep ON dep.id=pro.deposito_id "
. "LEFT JOIN grupos grp ON grp.id=pro.grupo_id ". $rComplemento;
$result = $this->conn->query($rSql);
while ($reg= $result->fetch_array()){
$rObj = new Produtos();
$rObj->id = $reg["id"];
$rObj->nome = $reg["nome"];
$rObj->data_cad = $reg["data_cad"];
$rObj->unidade_id = $reg["unidade_id"];
$rObj->nome_unidade = $reg["nome_unidade"];
$rObj->deposito_id = $reg['deposito_id'];
$rObj->nome_deposito = $reg['nome_deposito'];
$rObj->qtde = tiraPontoVirgula($reg['qtde']);
$rObj->qtde_min = tiraPontoVirgula($reg['qtde_min']);
$rObj->qtde_max = tiraPontoVirgula($reg['qtde_max']);
$rObj->cod_fornec = $reg['cod_fornec'];
$rObj->dt_ult_cust1 = formataData($reg['dt_ult_cust1']);
$rObj->ult_cust1 = formataMoeda($reg['ult_cust1']);
$rObj->fornec_id1 = $reg['fornec_id1'];
$rObj->dt_ult_cust2 = formataData($reg['dt_ult_cust2']);
$rObj->ult_cust2 = formataMoeda($reg['ult_cust2']);
$rObj->fornec_id2 = $reg['fornec_id2'];
$rObj->dt_ult_cust3 = formataData($reg['dt_ult_cust3']);
$rObj->ult_cust3 = formataMoeda($reg['ult_cust3']);
$rObj->fornec_id3 = $reg['fornec_id3'];
$rObj->epi = $reg['epi'];
$rObj->grupo_id = $reg['grupo_id'];
$rObj->nome_grupo = $reg['nome_grupo'];
$rObj->protocolo = $reg['protocolo'];
$rRetorno[] = $rObj;
}
return $rRetorno;
}
public function delete($rId){
$rId = mysqli_real_escape_string($this->conn,$rId);
$rSql="DELETE FROM produtos WHERE id=?";
$sql = $this->conn->prepare($rSql);
$sql->bind_param('i',$rId);
$ret = $sql->execute();
if ($ret){
Logger('Usuario:['.LOGIN.'] - Excluiu produto - ID:['.$rId.']');
}else{
Logger('Usuario:['.LOGIN.'] - ERRO:['. mysqli_error($this->conn).']');
}
return $ret;
}
public function update($rId, $rNome,$rDepositoId,$rUnidadeId,$rGrupoId,$rCodFornec,$rEpi,$rProtocolo){
$rId = mysqli_real_escape_string($this->conn,$rId);
$rNome = mysqli_real_escape_string($this->conn,$rNome);
$rDepositoId = mysqli_real_escape_string($this->conn,$rDepositoId);
$rUnidadeId = mysqli_real_escape_string($this->conn,$rUnidadeId);
$rGrupoId = mysqli_real_escape_string($this->conn,$rGrupoId);
$rCodFornec = mysqli_real_escape_string($this->conn,$rCodFornec);
$rEpi = mysqli_real_escape_string($this->conn,$rEpi);
$rProtocolo = mysqli_real_escape_string($this->conn,$rProtocolo);
$rSql="UPDATE produtos SET nome=?,deposito_id=?,unidade_id=?,grupo_id=?,cod_fornec=?,epi=?,protocolo=? WHERE id=?";
$sql = $this->conn->prepare($rSql);
$sql->bind_param('siiisssi', $rNome,$rDepositoId,$rUnidadeId,$rGrupoId,$rCodFornec,$rEpi,$rProtocolo,$rId);
$ret = $sql->execute();
if ($ret){
Logger('Usuario:['.LOGIN.'] - Alteração produto - ID:['.$rId.']');
}else{
Logger('Usuario:['.LOGIN.'] - ERRO:['. mysqli_error($this->conn).']');
}
//mysqli_close($this->conn);
return $ret;
}
public function montaSelec($rNome = 'produto_id', $rSelecionado = null){
$objProdutos = new Produtos();
$produtos = $objProdutos->select();
$select='';
$select= '<select class="form-control" name="' . $rNome . '" id="' . $rNome . '">';
$select.= '<option value="0">Selecione um Produto</option>';
foreach ($produtos as $linhaDB){
if (!empty($rSelecionado) && $rSelecionado === $linhaDB->id) {$sAdd = 'selected';}else{$sAdd='';}
$select.='<option value="'.$linhaDB->id.'"'.$sAdd.'>'.$linhaDB->nome.'</option>';
}
$select.= '</select>';
return $select;
}
public function gravaCusto($rFornecID,$rCusto,$rProdutoID,$rData){
$rData = mysqli_real_escape_string($this->conn,$rData);
$rData= gravaData($rData);
$rFornecID = mysqli_real_escape_string($this->conn,$rFornecID);
$rCusto = mysqli_real_escape_string($this->conn,$rCusto);
$rCusto = tiraPontoVirgula($rCusto);
$rProdutoID = mysqli_real_escape_string($this->conn,$rProdutoID);
$rSql="UPDATE pro_prc set ult_cust3=ult_cust2,
dt_ult_cust3=dt_ult_cust2,
fornec_id3=fornec_id2,
ult_cust2=ult_cust1,
dt_ult_cust2=dt_ult_cust1,
fornec_id2=fornec_id1,
fornec_id1=?,
ult_cust1=?,
dt_ult_cust1=?
WHERE produto_id=?";
$sql = $this->conn->prepare($rSql);
$sql->bind_param('isis',$rFornecID,$rCusto,$rProdutoID,$rData);
$ret = $sql->execute();
if ($ret){
Logger('Usuario:['.LOGIN.'] - Atualização de custo produto - ID:['.$rProdutoID.']');
}else{
Logger('Usuario:['.LOGIN.'] - ERRO:['. mysqli_error($this->conn).']');
}
//mysqli_close($this->conn);
return $ret;
}
}
?>
Até ai sem problemas, o problema que eu tenho é que quando eu vou listar algum dado, ele sempre me retorna estas mensagens:
Arquivo que tem o código para listar os produtos:
<?php
include_once './cabecalho.php';
$wSaida="";
$objProduto = new Produtos();
$wLista = $objProduto->select();
if(isset($wLista)){
foreach ($wLista as $linhaDB){
$wSaida .= '<tr class="gradeA">
<td>'.$linhaDB->cod_fornec.'</td>
<td>'.$linhaDB->nome.'</td>
<td>'.$linhaDB->nome_unidade.'</td>
<td>'.$linhaDB->nome_deposito.'</td>
<td>'.$linhaDB->nome_grupo.'</td>
<td>'.$linhaDB->qtde.'</td>
<td>
<a class="btn btn-primary btn-xs" href="produtoAlterar.php?id='.base64_encode($linhaDB->id).'"> <i class="fa fa-edit"></i> Editar </a>
<a class="btn btn-danger btn-xs" href="produtoExcluir.php?id='.base64_encode($linhaDB->id).'"><i class="fa fa-eraser"></i> Exluir </a>
<a class="btn btn-default btn-xs" href="produtoMovimento.php?id='.base64_encode($linhaDB->id).'"><i class="fa fa-search-plus"></i> Listar Movimentos </a>
</td>
</tr>';
}
}
?>
<div id="page-wrapper">
<br>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">Listagem de Produtos - 1.00.19102015</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="dataTable_wrapper">
<table class="table table-striped table-bordered table-hover table-condensed" id="dataTables-example">
<thead>
<tr>
<th>Ref.</th>
<th>Nome</th>
<th>Unidade</th>
<th>Depósito</th>
<th>Grupo</th>
<th>Qtde</th>
<th>Ação</th>
</tr>
</thead>
<tbody>
<?php echo $wSaida;?>
</tbody>
</table>
</div><!-- /.table-responsive -->
</div><!-- /.panel-body -->
</div><!-- /.panel -->
</div><!-- /.col-lg-12 -->
</div><!-- /.row -->
</div>
<?php include_once './rodape.php'; ?>
**Warning: mysqli::mysqli(): (08004/1040): Too many connections in C:\wamp\www\interno2\classes\conexao.class.php on line *12***
Notice: Too many connections in C:\wamp\www\interno2\classes\conexao.class.php on line 13
Alguém ai pode me ajudar?
Discussão (8)
Carregando comentários...