Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gsinhorini

Fatal error: Uncaught PDOException: SQLSTATE[42000] [1203]

Recommended Posts

Olá, muito boa tarde!

Estou desenvolvendo uma plicação PHP com Composer, na maquina local está tudo funcionando mas quando eu coloco no servidor esta dando o seguinte erro.

Fatal error: Uncaught PDOException: SQLSTATE[42000] [1203] User meucarr2_admin already has more than 'max_user_connections' active connections in 

 

Vou deixar a minha class de conexão, se algum puder me ajudar. Pois não sei o que fazer.

<?php
namespace Api\Repositories;
use \PDO as PDO;

class Conexao
{
	protected $conn;
	protected $bind;
	
	function __construct()
	{
		//$this->connection();
	}

	function connection(){

        if($_SERVER["HTTP_HOST"]=="localhost"){
			$_username="root";
			$_password="";
			$_server="localhost";
			$_database="liderveiculos";

        }
        else{
        	//dados banco de producao
            // $_username="";
            // $_password="";
            // $_server="";
            // $_database="";

            $_username="";
            $_password="";
            $_server="";
            $_database="";
        }


        try {
            $_conn = new PDO('mysql:host='.$_server.';dbname='.$_database, $_username, $_password);
            // PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8";
            $_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $_conn->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND,"SET NAMES utf8");
            $_conn->setAttribute(PDO::ATTR_PERSISTENT,TRUE);
            //OUTROS MODOS
            /*
                PDO::ERRMODE_SILENT
                PDO::ERRMODE_WARNING
                PDO::ERRMODE_EXCEPTION
            */
            $this->conn=$_conn;
        } catch(PDOException $e) {
            echo 'ERROR: ' . $e->getMessage();
        }
		
	}

	function select($_sql){
		unset($this->bind);

		$_query='SELECT '.$_sql["fields"].' FROM '.$_sql["tables"];

		if(isset($_sql["where"]) && count($_sql["where"])>0)
		{
			
			$_query.=$this->where($_sql["where"]);
            if(isset($_sql["econdition"]) && $_sql["econdition"]!="")
            {

                $_query.=' AND '.$_sql["econdition"];

            }
		}
		else
		{
			
			if(isset($_sql["econdition"]) && $_sql["econdition"]!="")
			{
				
				$_query.='  '.$_sql["econdition"];

			}	
		}



        if(isset($_sql["order"]) && $_sql["order"]!="")
		{
		
			$_query.=' ORDER BY '.$_sql["order"][0].' '.$_sql["order"][1];

		}
				
		//echo $_query;
        if(isset($this->bind))
		    $results= $this->executeQuery($_query,$this->bind);
        else
            $results= $this->executeQuery($_query);
	
		return $results;

	}

	function where($_where)
	{
		//echo '<pre>';
		//print_r($_where);
		//echo '</pre>';

		//unset($this->bind);
		$_queryWhere="";

		$_operators=array(	'=='=>'=',
							'!='=>'<>',
							'IN'=>'IN ( # )',
							'BETWEEN'=> '( #c BETWEEN #v1 AND #v2 )',
							'>'=>'>=');


		foreach ($_where as $_condition) {
			
			if(trim($_condition[0])=='OR')
			{
				$_increment=' OR ';
			}
			else
			{
				$_increment=' AND ';
			}

			$_findOperator=array_intersect($_condition, array_flip($_operators));
			
			//print_r($_findOperator);
			//echo count($_findOperator);
			if(count($_findOperator)>0)
			{
				foreach ($_findOperator as $_index => $_value) {
					$_op= $_operators[$_value];
					$_keyOperator=$_index;
					//echo $_value;
					//echo $_index;
				}

				//echo $_op;
				//echo $_keyOperator;

				$_keyCondition=array_search(array_search($_op, $_operators), $_condition);
				//print_r(array_search(array_search($_op, $_operators), $_condition));
				//	print_r($_keyCondition);
				//$_op=array_key_exists(key, search)
				//echo '--->'.strstr('#', $_op);


				if(!strstr('#', $_op))
				{
					//echo 2;

					switch ($_value) {
						case 'IN':
									$_queryWhere.=$_increment.' '.$_condition[$_keyCondition-1].' '.str_replace("#",  ' :'.$this->normalizeBind($_condition[$_keyCondition-1]), $_op);	
									$this->parameters($this->normalizeBind($_condition[($_keyCondition-1)]),$_condition[($_keyCondition+1)]);
							break;
						
						case 'BETWEEN':
									$_arrayReplace=array('#c'=>$_condition[$_keyCondition-1],
														 '#v1'=>':'.$this->normalizeBind($_condition[$_keyCondition-1].'_1'),
														 '#v2'=>':'.$this->normalizeBind($_condition[$_keyCondition-1].'_2'));
									
									$_queryWhere.=$_increment.strtr($_op, $_arrayReplace);
									$this->parameters($this->normalizeBind($_condition[$_keyCondition-1].'_1'),$_condition[$_keyCondition+1]);
									$this->parameters($this->normalizeBind($_condition[$_keyCondition-1].'_2'),$_condition[$_keyCondition+2]);

									//echo $_queryWhere.=' '.$_condition[$_keyCondition-1].' '.$_op.' :'.$this->normalizeBind($_condition[$_keyCondition+2]).$_increment;	
									//$this->parameters($_condition[($_keyCondition-1)],$_condition[($_keyCondition+1)]);
							break;
						default:
								//echo 'default';
								$_queryWhere.=$_increment.$_condition[$_keyCondition-1].' '.$_op.' :'.$this->normalizeBind($_condition[$_keyCondition-1]);	
								//echo $_condition[($_keyCondition-1)].'<>'.$_condition[($_keyCondition+1)];
								//echo $this->normalizeBind($_condition[($_keyCondition-1)]).'<>'.$_condition[($_keyCondition+1)];
								$this->parameters($this->normalizeBind($_condition[($_keyCondition-1)]),$_condition[($_keyCondition+1)]);
							break;
					}

					// $_queryWhere.=' '.$_condition[$_keyCondition-1].' '.$_op.' :'.$this->normalizeBind($_condition[$_keyCondition-1]).$_increment;	
					// $this->parameters($_condition[($_keyCondition-1)],$_condition[($_keyCondition+1)]);
				}
				else
				{
					// echo  ' '.$_condition[$_keyCondition-1].' '.$_op.' '.$_increment;
					$_queryWhere.=$_increment.str_replace('#', ' :'.$this->normalizeBind($_condition[$_keyCondition-1]).' ', ' '.$_condition[$_keyCondition-1].' '.$_op);						
					$this->parameters($this->normalizeBind($_condition[($_keyCondition-1)]),$_condition[($_keyCondition+1)]);	

				}
				
			}
			else
			{
				 $_queryWhere.=$_increment.' '.$_condition[0].' = :'.$this->normalizeBind($_condition[0]);
				$this->parameters($this->normalizeBind($_condition[0]),$_condition[1]);
			}

			
			
		}

		return ' WHERE '.substr($_queryWhere,4);

	}

	function parameters($_index,$_value)
	{
		//echo $_index.'<->'.$_value;
		$this->bind[':'.$_index]=utf8_decode($_value);
	}
	function normalizeBind($_string)
	{
		return str_replace(".", "_", $_string);
	}

	function executeQuery($_query,$_bind=null)
	{

 		/*echo '<pre>';
 		echo $_query;
 		echo '<br/>';
 		print_r($_bind);
 		echo '</pre>';*/

		try {
			$this->connection();
		
			//echo $_query;
			$_sql=$this->conn->prepare($_query);
			
			$this->conn->beginTransaction(); 

			$_result=$_sql->execute($_bind);			

		//var_dump($_sql);
		//exit();

			$_tipoQuery=strtoupper(substr(trim($_query),0,6));

			if($_tipoQuery=='SELECT' )
			{
				$_resultado=array();
                while($_row=$_sql->fetch(PDO::FETCH_ASSOC)) {
                    $_resultado[]=array_map('utf8_encode',$_row);
                    //$_resultado[]=$_row;
                }

                $this->conn->commit();
			   // var_dump($_resultado);
			    return $_resultado;
			}
			elseif($_tipoQuery=='INSERT'){
				//$_sql->commit();
				//oracle não possui
				$_ultimoId= $this->conn->lastInsertId();

				$this->conn->commit();
				return $_ultimoId;
				//return true;
			}
			elseif($_tipoQuery=='DELETE'){
				//$_sql->commit();
				//$_ultimoId= $this->conn->lastInsertId();

				$this->conn->commit();
				return true;

			}
			elseif($_tipoQuery=='UPDATE'){
				//$_sql->commit();
				//$_ultimoId= $this->conn->lastInsertId();
				
			
				$this->conn->commit();
				return true;
			
			}
			else{
				return $_result;
			}
			$this->conn->close();
			
		} catch(PDOException $e) {
            $this->conn->rollBack();

            echo 'ERROR: ' . $e->getMessage();
		    echo '<br/>';
		    echo 'Query:'.$_query;
		    echo '<br/>';
		    echo 'Bind:';
		    print_r($_bind);
		    echo '<pre>';
		    //print_r($e);
		    echo '</pre>';
		    $this->conn->close();
		}
		
	}

	function update($_sql)
	{
		unset($this->bind);
		$_query='UPDATE '.$_sql["tables"].' SET ';
		$_set="";
		$key="";
		foreach ($_sql["set"] as $key => $value) {
			//$this->parameters('1',1);
			$_set.=''.$key.'= :'.$key.'_ , ';
			//echo $this->normalizeBind($key.'_').'->'.$value;
			$this->parameters( $this->normalizeBind($key.'_'),  $value);	
		}

		$_query.=substr($_set,0,-2);

		if($_sql["where"] && count($_sql["where"])>0)
		{
			$_query.=$this->where($_sql["where"]);
		}
		else
		{
			$_query.=' WHERE '.$_sql["econdition"];
		}

		//$_query.=$_sql["econdition"];
		//echo $_query;
		//print_r($this->bind);

		return $this->executeQuery($_query,$this->bind);
	}


	function insert($_sql)
	{
		unset($this->bind);
		$_query='INSERT INTO '.$_sql["tables"].' ';

		$_into="";
		$_value="";

		foreach ($_sql["values"] as $key => $value) {
			//$this->parameters('1',1);
			$_into.=$key.' , ';
			$_value.=':'.$key.' , ';
			//echo $this->normalizeBind($key.'_').'->'.$value;
			$this->parameters( $this->normalizeBind($key),  $value);	
		}

		$_query.='('.substr($_into,0,-2).') VALUES ('.substr($_value,0,-2).')';

		return $this->executeQuery($_query,$this->bind);

	}

	function delete($_sql)
	{
		unset($this->bind);
		$_query='DELETE FROM '.$_sql["tables"].' ';

		if($_sql["where"] && count($_sql["where"])>0)
		{
			
			$_query.=$this->where($_sql["where"]);
		}
		else
		{
			
			if(isset($_sql["econdition"]) && $_sql["econdition"]!="")
			{
				
				$_query.=' WHERE '.$_sql["econdition"];

			}	
		}
		
		//return $_query;
		return $this->executeQuery($_query,$this->bind);


	}

	
}



?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.