Ir para conteúdo

Arquivado

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

BelleFisio

MySQLi não insere os dados no banco de dados

Recommended Posts

Olá! Boa tarde.

 

Estou fazendo um formulário de cadastro (bem simples) com PHP e MySQLi, porém não consigo exito para inserir os dados no meu Banco de Dados . Quando esta utilizando o MySQL estava inserido o conteúdo digitado nos campos do formulário, porém na página do formulário (atrás do formulário aparecia o alerta de que o MySQL estava obsoleto e pedia para utilizar o MySQLi ou PDO). Então fui pesquisar sobre o MySQLi sobre como "transformar o mysql em msqli". Consegui fazer a conexão com o Bando de Dados com MySQLi, porém não esta inserindo o conteúdo no Banco de Dados. Fiz vários testes de formulários de cadastro com msqli (que encontrei nas pesquisas na internet), li o manual do MySQLi tbm, mas ainda continuo com essa dificuldade. 

 

 

Abaixo o código que utilizei:

 

Conexão:

<?php
$hostname_conecta_site = "localhost";
$database_conecta_site = "conexão";
$username_conecta_site = "Admin";
$password_conecta_site = "minha senha";
$conecta = mysqli_connect($hostname_conecta_site, $username_conecta_site, $password_conecta_site) or trigger_error(mysqli_error(),E_USER_ERROR); 
?>

 

 

 

 

Formulário:

<?php require_once('../../Connections/conecta_site.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($theValue) : mysqli_escape_string($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;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
  $insertSQL = sprintf("INSERT INTO newsletter (nome, email) VALUES (%s, %s)",
                       GetSQLValueString($_POST['nome'], "text"),
                       GetSQLValueString($_POST['email'], "text"));

  mysqli_select_db($database_conecta_site, $conecta_site);
  $Result1 = mysqli_query($insertSQL, $conecta_site) or die(mysqli_error());

  $insertGoTo = "newsletter.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>

<link href="css/estilos.css" rel="stylesheet" type="text/css" />

<form method="POST" name="form" action="<?php echo $editFormAction; ?>"POST" > 
<ul>
<li> <label class="name_newsletter" for="name">Nome:</label> <input type="nome" class="news_footer_name" name="nome"  id="nome"  maxlength="100" /></li>

<li> <label class="email_newsletter" for="email">E-mali:</label> <input type="email" class="news_footer_mail" name="email" id="email" maxlength="100"/></li>

<input class="btn_newsletter" type="submit" value="Cadastrar" id="btnSend">
<input type="hidden" name="MM_insert" value="newsletter" />
<input type="hidden" name="MM_update" value="newsletter" />
<input type="hidden" name="MM_insert" value="form" />
</form>
</ul>

 

Os alertas de  erro que aparecem são :

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\wamp64\www\meusite\arquivos\form.php on line 10

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\wamp64\www\meusite\arquivos\form.php on line 44

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\wamp64\www\meusite\arquivos\form.php on line 45

 

Mas eu não estou sabendo identificar os parâmetros que faltam e onde os acrescentar.

 

Obs.:Estou utilizando o Dreamweaver CS6  e o Wampserver.

 

Esses códigos acima formam os que ao menos consegui estabelecer a conexão.

 

Gostaria do auxilio de vocês  para resolver esse problema. 

 

Agradeço a atenção!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

https://pastebin.com/9cXR6kj8

 

Corrigi, onde tem os marcadores: //Inicia aqui | //Termina aqui

 

Foi onde mexi, se der certo ou errado, comenta aí para podermos te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O link irá abrir um site que contém o seu código corrigido, é tipo um bloco de notas, usei para não poluir o tópico com códigos imensos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada tbm pela dica do site,  eu acabei colocando o código grande aqui no tópico me desculpem =^^=

 

Fiz a modificação indicada, mas ainda aparece o erro que indicado que é esperado 2 parâmetros  e variáveis indefinidas. 

 

Eu teria que trocar as alguma variável na parte mysqli_real_escape_string($theValue)?

 

Agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

https://pastebin.com/UfRLuWsr

 

A função mysqli_real_escape_string deve ser chamada dessa forma: string mysqli_real_escape_string ( mysqli $link , string $escapestr )

 

Sendo assim, acompanhe as mudanças no código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada. Agora é indicado que uma variável esta indefinida :

Notice: Undefined variable: conecta in C:\wamp64\www\arquivos\form.php on line 11

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\wamp64... on line 11

Notice: Undefined variable: link in C:\wamp64... on line 47

Warning: mysqli_select_db() expects parameter 1 to be mysqli, null given in C:\wamp64... on line 47
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\wamp64...on line 51

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\wamp64... on line 51

 

Eu teria que definir uma outra variável? No caso para o $theValue  do mysqli_real_escape_string($conecta, $theValue);?

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, BelleFisio disse:

Notice: Undefined variable: conecta_site in C:\wamp64\www\Maktub\arquivos\form.php on line 11

Por que está colocando a variável conecta_site? Ela não existe no seu arquivo de configuração, a que existe é: conecta.

 

Arrume essa que o resto irá funcionar, verifique se está conseguindo pegar essa variável pelo: include "../../Connections/conecta_site.php";

 

Acho que colocou o caminho errado, ou apenas o nome da variável mesmo. O nome da sua variável é: $conecta. Conforme tem no seu arquivo de conexão. Se tiver skype e TeamViewer... Fica até melhor de ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe esse eu copiei do erro do exemplo (teste que fiz acompanhando o passo a passo do código que uma amiga me passou e acabei confundindo na hora de postar aqui pois as duas págs estavam abertas) depois eu mudei o nome para o meu site) Mas esta tudo certinho. Com a variável $conecta 

Notice: Undefined variable: conecta in C:\wamp64\www\arquivos\form.php on line 11

 

Me desculpe o engano. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então está tudo certo? Deu certo as mudanças? Está operante?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim o include esta correto tbm. 

 

Não os erros continuam, sempre é indicado que falta definir uma variável. E ainda não insere os dados no banco de dados.

 

Agradeço a paciência.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom! Qualquer coisa o fórum está aqui pra te ajudar. Peço que coloque a tag [Resolvido] no começo do nome do tópico. Se te ajudei, não esquece de marcar +1 :smiley:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que copiei errado foi inserir o erro relatado em uma outra página (a de texte  aqui no tópico), mas isso aconteceu porque as duas páginas estavam abertas e acabei confundindo por ser o mesmo erro.

Acho que não deu para entender a minha explicação. O erro permanece, Não foi resolvido o problema. Se puder deixar o tópico em aberto eu agradeço, pois não consegui resolver o problema

 

Mas mesmo assim eu agradeço sua atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, Jesse&Francinete disse:

Que bom! Qualquer coisa o fórum está aqui pra te ajudar. Peço que coloque a tag [Resolvido] no começo do nome do tópico. Se te ajudei, não esquece de marcar +1 :smiley:

 

Infelizmente o erro não foi resolvido. Por gentileza, não feche o tópico.

 

Mas mesmo assim eu agradeço sua atenção e por ter despendido tempo para tentar me ajudar no problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quais erros aparecem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então os erros são esses:

Notice: Undefined variable: conecta in C:\wamp64\www\arquivos\form.php on line 11

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\wamp64... on line 11

Notice: Undefined variable: link in C:\wamp64... on line 47

Warning: mysqli_select_db() expects parameter 1 to be mysqli, null given in C:\wamp64... on line 47
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\wamp64...on line 51

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\wamp64... on line 51

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mkboy
      Olá
       
      Tenho uma situação onde tenho a mesma tabela em dois bancos de dados diferentes, em locais diferentes.
      E quando atualizar uma tabela preciso atualizar a segunda no outro banco de dados também, é a mesma instrução SQL, os bancos / tabelas / registros são iguais.
       
      Tentei isso, mas não funciona:
       
      $endereco_banco = "186.000.00.01"; $usuario = "us01"; $senha = "010101"; $banco = "db01"; $conexao = new mysqli($endereco_banco,$usuario, $senha, $banco); $endereco_banco_externo = "186.000.00.02"; $usuario_externo = "us02"; $senha_externo = "020202"; $banco_externo = "db02"; $conexao_externo = new mysqli($endereco_banco_externo,$usuario_externo, $senha_externo, $banco_externo); //Atualiza no primeiro DB $conexao->query($str) or trigger_error($conexao->error." [$str]"); //Atualiza no segundo DB $conexao_externo->query($str) or trigger_error($conexao_externo->error." [$str]"); Podem me ajudar por favor.
    • Por Lísias de Castro
      Ola. Estou criando um sistema de carrinho em php e pra isso preciso de um banco de dados. Pra não ficar chamando todas as funções a cada vez que a pagina atualiza, decidi usar a função mysqli_select_db, que verifica se o db existe e caso não exista, entre nas funções e crie. Porém, ao chamar a função quando o db não existe o php lança um "erro não capturado" e trava o layout. Se eu chamo o código sem o mysqli_select_db o código roda, porem chamando as funções a cada atualização. Poderia ser algum erro na api, ou tem uma nova forma pra pegar o tipo mysqli no php8?
      Esse é o código que eu chamo pra salvar os dados:
       
      ```php
      public function save($host,$user,$pass,$db){
              $connection = mysqli_connect($host, $user, $pass);
              if($connection){
                  if(mysqli_select_db($connect,$db)){
                  }
                  $dbCreator = "CREATE DATABASE IF NOT EXISTS ".$db;
                  if(mysqli_query($connection, $dbCreator)){
                      //echo "Database created successfully"."</br>";
                  } else{
                      echo "ERROR: Could not able to execute $sql. " . mysqli_error($connection);
                      return 0;
                  }
                  $tableCreator = "CREATE TABLE IF NOT EXISTS `".$db."_tb` (".
                              "`name` VARCHAR(64) NOT NULL,".
                              "`price` REAL,".
                              "`amount` SMALLINT,".
                              "`barcode` BIGINT NOT NULL PRIMARY KEY,".
                              "`lot` VARCHAR(64) NOT NULL,".
                              "`manufactured` VARCHAR(10) NOT NULL,".
                              "`maturity` VARCHAR(10) NOT NULL".
                              ");";
                  $insert = "INSERT INTO ".$db."_tb (`name`, `price`, `amount`, `barcode`, `lot`, `manufactured`, `maturity`) ".
                                "SELECT ".
                                "\"$this->name\",".
                                "\"$this->price\",".
                                "\"$this->amount\",".
                                "\"$this->barcode\",".
                                "\"$this->lot\",".
                                "\"$this->manufactured\",".
                                "\"$this->maturity\"".
                                " FROM dual WHERE NOT EXISTS(SELECT * FROM $db"."_tb WHERE barcode = '$this->barcode')LIMIT 1;";
                  if(mysqli_select_db($connection,$db)){
                      if(mysqli_query($connection,$tableCreator));//echo "Tabela ".$db."_tb criada com sucesso.<br/>";
                      if(mysqli_query($connection,$insert));//echo "Dados inseridos com sucesso em $db"."_tb<br/>";
                  }
                  mysqli_close($connection);
                  return 1;
              }
              return 0;
          }
      ```


    • Por AdrianoAP
      Pessoal estou tendo este erro quando eu fui passa a minha aplicação do mysql para o mysqli vejam o código -->>
       
      <?php
        $emitente = $mysqli->query("SELECT nome FROM emitente ORDER BY id ASC LIMIT 1");
        while($ln = $emitente->fetch_array()){
        echo $ln['nome'];
      }?>
       
       
      Devido á isso meu sistema não consegue fazer o login, se alguém puder me dar alguma dica eu agradeço.
    • Por Felper
      Criei um sistema de login com php e mysql mas não consigo realizar o login mesmo tendo certeza de que os dados foram cadastrados com sucesso. Não sei o que fiz de errado. Vejam o código:
      <?php $login2 = $_POST['loginlogar']; $senha2 = $_POST['senhalogar']; $link = mysqli_connect("localhost", "root", "", "bancolanche") or die("<h1>Não foi possível conectar!!</h1>". mysqli_error()); $banco = mysqli_select_db($link, "bancolanche") or die("<h1>Não foi possível abrir banco de dados!!</h1>". mysqli_error()); $sql = "SELECT login, senha FROM users"; $resulta = mysqli_query($link, $sql); while ($book = $resulta->fetch_object()) { $logindb = $book->login; $senhadb = $book->senha; } if($login2 == "" || $senha2 == ""){ $_SESSION['msg'] = "<h1 style='color:red'>Erro ao logar! Há campos de preenchimento obrigatório em branco.</h1>"; header("Location: logar.php"); } else { if($logindb==$login2 && $senhadb==$senha2){ $_SESSION['msg'] = "<h1 style='color:green'>Logoff realizado com sucesso!</h1>"; header("Location: index.html"); } else { $_SESSION['msg'] = "<h1 style='color:red'>Erro ao logar! Usuário inexistente ou senha incorreta.</h1>"; header("Location: logar.php"); } } mysqli_close($link); ?>  
    • Por Marcos Vinícius
      Prezados,
       
      Estou tentando fazer uma consulta que soma os valores de um campo em determinado mês/ano mas não estou conseguindo fazer funcionar. Alguém tem uma ideia do que pode ser?
       
      "SELECT sum(caepf) AS scaepf FROM atend WHERE date_format(data, '%Y-%m') <= date_format('$d', '%Y-%m') AND date_format(data, '%Y-%m') >= date_format('$d', '%Y-%m') AND pav = '$nome_pav' AND dr = '$dr' ";  
×

Informação importante

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