Ir para conteúdo

POWERED BY:

Arquivado

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

AlexandreHenrique

[Resolvido] erro com insert into com php 5.6

Recommended Posts

Bom dia amigos,

já tentei de várias formas realizar um  cadastro simples  no banco com PHP 5.6 e não dá certo!

Não exibe erro, mas não cadastra. Alguém pode dá uma foça?

Vê o código:

 

    $conexao = mysqli_connect("$host","$user","$senha","$banco") 
    or die("Error " . mysqli_error($link));
    
    $autor = "Zezim";
    $assunto = "Testando";
    $status = 0;
    
    $sql_statement="INSERT INTO ticket (idTicket,autor,assunto,status)
    VALUES ('','$autor','$assunto','$status')";
    mysqli_query($conexao,$sql_statement);


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei o problema!

Estava nessa string INSERT:

O campo e o valor da coluna auto-increment devem ser omitidos e variáveis tipo INT não pode ter aspas

$sql_statement="INSERT INTO ticket (autor,assunto,status)
    VALUES ('$autor','$assunto',$status)";

Compartilhar este post


Link para o post
Compartilhar em outros sites

aconselho criar um conexao.php ao invés de ter que colocar a todo momento um tipo de conexao pra db.

 

um pdo decente:

Citar

 <?php 
 /*  
  * constantes de parametros para configuração da conexão  
  */  
 define('HOST', 'localhost');  
 define('DBNAME', '');  
 define('CHARSET', 'utf8');  
 define('USER', 'root');  
 define('PASSWORD', '');  

 class Conexao {  

   /*  
    * atributo estático para instancia do PDO  
    */  
   private static $pdo;

   /*  
    * escondendo o construtor da classe  
    */ 
   private function __construct() {  
     //  
   } 
 
   /*  
    * metodo estatico para retornar uma conexão valida  
    * verifica se já existe uma instancia da conexão, caso nao, configura uma nova conexão  
    */  
   public static function getInstance() {  
     if (!isset(self::$pdo)) {  
       try {  
         $opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8', PDO::ATTR_PERSISTENT => TRUE);  
         self::$pdo = new PDO("mysql:host=" . HOST . "; dbname=" . DBNAME . "; charset=" . CHARSET . ";", USER, PASSWORD, $opcoes);  
       } catch (PDOException $e) {  
         print "Erro: " . $e->getMessage();  
       }  
     }  
     return self::$pdo;  
   }  
 }

 

e usaria assim em cada script:

 

Citar

        $conexao = conexao::getInstance();

 

e claro com um require na conexao.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

mudei um pouco o arquivo de conexão:

<?php
$host = "localhost";
$user = "usuarioi";
$pass = "*********";
$banco = "banco";

$conexao = new mysqli($host,$user,$pass,$banco) ;

if($conexao->connect_errno)
    echo "Erro ao conectar:(".$conexao->connect_errno.")".$conexao->connect_error;    
?>

 

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 Luiz Henrique
      Olá,
       
      Preciso fazer uma inserção no DB de registros referente a pagamentos, quando for no crédito será realizado o insert com sua respectiva data de compensação e valor da parcela exemplo:
       3 parcelas de 100.00 e cada registro em seu devido mês:
      INSERT INTO tabela (valor, data) VALUES (100, 2022-08-17),(100, 2022-09-17),(100, 2022-10-17) É mais eficiente fazer da forma acima ou colocar 3 INSERT?
      Ou existe forma melhor de fazer isso?
       
      Obrigado.,
       
    • 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 Carlos Antoliv
      Senhores, bom dia.
       
      tenho um campo status. Então, a ideia é mudar o status. Consigo alterar o status quando necessário. Daí, pensei em todas vez que alterar, salvar o id do usuário, data, hora, o último status alterado...
      consigo fazer isso com INSERT, depois do UPDATE.
       
      Nao uso trigger. Até tentei fazer, mas não saiu como eu queria.
       
      Então, para os maiores entendedores do assunto, a melhor prática seria a TRIGGER ou INSERT ? Melhor prática ou o que mais funciona na prática ?
       
      Alguém poderia dissertar sobre isso ?
      Vlw..abço
    • Por OSVALDO ARANTES JÚNIOR
      Preciso validar um acesso a uma pagina, que so pode ser acessada uma vez a cada 20 respostas certas, estou usando  if( $query->num_rows % 20 == 0 ) , so que toda vez que a pagina carrega, executa o comando poderiam me dar uma dica de como prosseguir depois das vinte respostas para 40 e depois somente com 60.. 80...  e assim redirecionar automaticamente de 20 em 20.
×

Informação importante

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