Ir para conteúdo
Carlos Louvato

[Resolvido] ERRO: mysqli_real_escape_string

Recommended Posts

Olá a todos.

Tentei achar o erro em todo site mais não consegui.

Estou fazendo um acesso ao painel administrativo com senha e usuário.

Tive que mudar minha conexão para mysqli_connect e fui corrigindo os erros do código.

Cheguei no erro mysqli_real_escape_string.

Estudei sobre o manual onde solicita colocar 2 parâmetros, sendo que o primeiro seja a conexão. 

Meu código:

 

<?php require_once('Connections/conecta.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($conecta, $theValue) : mysqli_escape_string($conecta, $theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['usuario'])) {
  $loginUsername=$_POST['usuario'];
  $password=$_POST['senha'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "painel.php";
  $MM_redirectLoginFailed = "index.php";
  $MM_redirecttoReferrer = false;
  mysqli_select_db($database_conecta,$conecta);
  
  $LoginRS__query=sprintf("SELECT usuario, senha FROM usuario WHERE usuario=%s AND senha=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysqli_query($LoginRS__query, $conecta) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
<link href="estilos.css" rel="stylesheet" type="text/css">
<div id="index">
  <div class="retorno">
  <p>Área Exclusisiva para Atletas e Professores<br /><br>
  <a href="#">Retornar ao menu principal</a></p>  
  </div>
  <form name="logar" method="POST" action="<?php echo $loginFormAction; ?>">
    <fieldset>
     <legend>Acesso as Inscrições</legend>
     
       <label>
       <span>Usuário</span>
       <input type="text" name="usuario" />
       </label>

       <label>
       <span>Senha</span>
       <input type="password" name="senha" />
       </label>
       <input type="submit" name="logar" value="Logar" class="btn" />
       </fieldset>
       <div class="link">
       <a href="recuperar.php">Recuperar dados</a> | <a href="cadastra.php">Cadastrar usuário</a>
       </div>
  </form>
</div>

Os erros que seguem:

 

Citar

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /home/copam957/public_html/copa1/index.php on line 52

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /home/copam957/public_html/copa1/index.php on line 10

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /home/copam957/public_html/copa1/index.php on line 10

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in /home/copam957/public_html/copa1/index.php on line 57

 

O que devo estudar para resolver o problema.?

Agradeço a todos.

Carlos Louvato

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu problema está em criar a conexão. Que provavelmente está no seguinte arquivo 

require_once('Connections/conecta.php');

Outro ponto é que utilizando prepared statements, a função mysqli_real_escape_string se torna obsoleta.

 

Tudo que você precisa saber sobre SQL Injections, você pode localizar no seguinte artigo:

https://phpdelusions.net/sql_injection

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, Gabriel Heming disse:

Seu problema está em criar a conexão. Que provavelmente está no seguinte arquivo 


require_once('Connections/conecta.php');

Outro ponto é que utilizando prepared statements, a função mysqli_real_escape_string se torna obsoleta.

 

Tudo que você precisa saber sobre SQL Injections, você pode localizar no seguinte artigo:

https://phpdelusions.net/sql_injection

 

OLá, Minha Conexão citada acima é o arquivo conecta.

 

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_conecta = "localhost";
$database_conecta = "copam9887_copa1";
$username_conecta = "copam9887_root";
$password_conecta = "145689976";
$conecta = mysqli_connect($hostname_conecta, $username_conecta, $password_conecta) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

Grato Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui está o seu erro:

Citar

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /home/copam957/public_html/copa1/index.php on line 52

 

 

Veja qual é o primeiro parâmetro:

mysqli_select_db($database_conecta,$conecta);

Você está mandando o primeiro parâmetro o nome do banco e o segundo o objeto MySQLi, inverta os parâmetros.

Compartilhar este post


Link para o post
Compartilhar em outros sites
36 minutos atrás, Gabriel Heming disse:

Aqui está o seu erro:

 

Veja qual é o primeiro parâmetro:


mysqli_select_db($database_conecta,$conecta);

Você está mandando o primeiro parâmetro o nome do banco e o segundo o objeto MySQLi, inverta os parâmetros.

 

To apanhando aqui! Final de semana fritando o cêrebro tentando descobrir o erro! Fiz a inversão dos 2 parâmetros.

Citar

mysqli_select_db($conecta, $database_conecta);

 

Ele continua pedindo mais um parâmentro na linha 10.

 

Citar

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /home/copam957/public_html/copa1/index.php on line 10

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /home/copam957/public_html/copa1/index.php on line 10

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in /home/copam957/public_html/copa1/index.php on line 57

 

Estou estudando o manual , mais não consigo descobrir o erro.

Grato Pela ajuda. Carlos Louvato

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função mysqli_real_escape_string() não precisa ser usada se você estiver usando prepared statements.

 

Quanto ao mysqli_query, é um erro comum de quem saiu das funções mysql. Esse manual aqui pode te ajudar:

http://rberaldo.com.br/como-atualizar-php-mysql-mysqli/

 

Outro erro que irá acontecer é que você está misturando funções mysql com mysqli, exatamente nesse código aqui: 

$loginFoundUser = mysql_num_rows($LoginRS);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 04/05/2018 at 11:03, Carlos Louvato disse:

Muito Obrigado pela dica. Funcionando Perfeitamente. 

Poderia mostrar como você fez, como ficou o seu código pois estou com o mesmo prolema !

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 19/03/2018 at 10:36, Gabriel Heming disse:

A função mysqli_real_escape_string() não precisa ser usada se você estiver usando prepared statements.

 

Quanto ao mysqli_query, é um erro comum de quem saiu das funções mysql. Esse manual aqui pode te ajudar:

http://rberaldo.com.br/como-atualizar-php-mysql-mysqli/

 

Outro erro que irá acontecer é que você está misturando funções mysql com mysqli, exatamente nesse código aqui: 


$loginFoundUser = mysql_num_rows($LoginRS);

 

Se a Função mysqli_real_escape_string() não precisa ser usada então como ficaria o código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos.
       
      Quando programava em DOS. utilizava algumas teclas de atalho para: SALVAR / EDITAR / EXCLUIR / IMPRIMIR.
      Por exemplo:
      Salvar ----> ALT+S
      Editar ----> ALT+E
      Excluir --> ALT+X
      Imprimir -> ALT+I

      no PHP tem como colocar esses ATALHOS nos button, para o usuário trabalhar com esses atalhos e como seria ?

      grato,
       
      Cesar
    • Por violin101
      Caros Amigos, saudações.
       
      Por favor, me perdoa em postar uma dúvida.
       
      Preciso criar uma Rotina onde o usuário possa buscar na Base de Dados de Produtos, tanto por Código e Descrição, ou seja:
      - caso o usuário digita o Código, mostra os dados do Produto.
      - caso o usuário digita a Descrição, mostra os dados do Produto
       
      Fiz uma Rotina, onde o usuário digita a DESCRIÇÃO com a função AUTOCOMPLETE.    <=== está funcionando certinho.
       
      Minha dúvida é como faço para DIGITAR o Código e mostrar os dados também.
       
      o meu AutoComplete na MODEL está assim.
      public function autoCompleteProduto($q){ $this->db->select('*' ) ->from('produtos') ->where('produtos.statusProd',1) ->like('descricao', $q) ->limit(5) ->order_by('descricao', 'ASC'); $query = $this->db->get(); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { $row_set[] = ['label' => str_pad($row['idProdutos'], '5', '0', STR_PAD_LEFT).' - '.$row['descricao'], 'id' => $row['idProdutos'], 'descricao' => $row['descricao'], 'cod_interno' => $row['cod_interno'], 'prd_unid' => $row['prd_unid'], 'estoque_atual' => $row['estoque_atual'] ]; } echo json_encode($row_set); } }  
       
      no CONTROLLER está assim:
      public function autoCompleteProduto() { $this->load->model('estoque/lancamentos_model'); if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->lancamentos_model->autoCompleteProduto($q); } }  
       
      na VIEW está assim:
      <div class="col-md-10"> <label for="idProdutos">Produto:</label> <input type="hidden" name="idProdutos" id="idProdutos"> <input type="text" class="form-control" id="descricao" name="descricao" style="font-size:15px; font-weight:bold;" placeholder="Pesquisar por descrição do produto" disabled> </div>  
      VIEW + JAVASCRIPT
       
      //Função para trazer os Dados pelo o AutoComplete. function resolveAutocomplete() { $("#descricao").autocomplete({ source: "<?php echo base_url(); ?>estoque/lancamentos/autoCompleteProduto/", minLength: 2, select: function (event, ui) { $("#idProdutos").val(ui.item.id); $("#cod_interno").val(ui.item.cod_interno); $("#descricao").val(ui.item.descricao); $("#prd_unid").val(ui.item.prd_unid); $("#estoque_atual").val(ui.item.estoque_atual); $("#qtde").focus(); } }); } // inicia o autocomplete resolveAutocomplete();  
      Grato,
       
      Cesar
    • Por belann
      Olá!
       
      Estou tentando criar um projeto laravel e está dando o seguinte erro 
      curl error 60 while downloading https://getcomposer.org/versions: SSL certificate problem: unable to get local issu
        er certificate
      Já tentei atualizar o composer, mas dá o mesmo erro acima.
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
×

Informação importante

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