Ir para conteúdo

Arquivado

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

joblopes

[Resolvido] Dúvida em DELETE com PDO

Recommended Posts

Spoiler

Prezados amigos, sou novo aqui fórum,  estou com uma dúvida que surgiu após
 assistir uma explicação sobre  a  montagem de um DELETE com PDO. 
 Eis o código:  


<?php
     $deletarUsuario = $pdo->prepare("DELETE FROM usuarios WHERE id=?");
     $deletarUsuario->bindvalue(1, $id);
     $deletarUsuario->execute();
?>
        

   na codificação de um SELECT, INSERT ou UPDATE, usamos no bindValue uma string precedida por dois pontos, de
   acordo como fora definido na query do prepare.  Porque neste exemplo o autor usou o número 1( neste caso, um inteiro)

  e não uma string (valor entre aspas precedido de dois pontos) 

  Obrigado a todos.

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois ele usou "?"

Existem 2 formas de usar o bindValue:

 

passando "?" ou :string.

 

No caso da "?" você utiliza como se fosse um "array", exemplo:

 

DELETE FROM usuarios WHERE id = ? AND pos_2 = ?

                                                                (1)                      (2)

 

No php...

$deletarUsuario->bindvalue(1, $id);
$deletarUsuario->bindvalue(2, $pos_2);

 

Ou seja, você trata cada "?" como uma ocorrência e as localiza utilizando um index (inteiro) referente à ordem em que elas estão, não sei se eu soube explicar muito bem mas acho que você pegou...

 

Enquanto na string, você usaria:

 

DELETE FROM usuarios WHERE id = :id AND pos_2 = :pos_2

 

e na hora do bind...

$deletarUsuario->bindvalue(':id', $id);
$deletarUsuario->bindvalue(':pos_2', $pos_2);

 

A diferença? Acredito eu que nenhuma, talvez TALVEZ BEM TALVEZ estou falando isso por MIM, acredito que usando interrogação tenha um levíssimo ganho de desempenho, mas se houver, deve ser bem irrelevante e como você está começando, recomendo utilizar :string pra conseguir se localizar e entender melhor como funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mateus Silva, muito obrigado pela explicação sobre as diferenças entre o uso de ? e/ou strings no bindvalue do PDO. Seguirei seu conselho e passarei a usar por enquanto as strings mesmo, aos poucos creio que os trabalhos com PDO irão ficar menos nebuloso.

Valeo

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 24/08/2017 at 15:06, joblopes disse:

Mateus Silva, muito obrigado pela explicação sobre as diferenças entre o uso de ? e/ou strings no bindvalue do PDO. Seguirei seu conselho e passarei a usar por enquanto as strings mesmo, aos poucos creio que os trabalhos com PDO irão ficar menos nebuloso.

Valeo

 

Imagina! Tive o mesmo problema que você quando comecei a usar o PDO, parecia algo de outro mundo, com o tempo você se adapta e vê que ele é muito simples e facílimo de usar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mateus.andriollo
      Alguém sabe uma boa ferramenta (grátis) para comparação de banco de dados Desenvolvimento e Produção.
      Preciso automatizar as atualizações no banco de dados da produção com base no banco de dados de desenvolvimento.
       
      Achei algumas ferramentas mas pagas....
    • Por junior3d
      Estudo há poucos dias PHP e gostaria de saber no trecho abaixo por que usa-se o bindValue para jogar o conteúdo da variável na sql do método prepare do PDO?
      segue o trecho:
      $sql = $pdo->prepare("INSERT INTO usuarios (nome, email, telefone, senha) VALUES (:n, :t, :e, :s)"); $sql->bindValue(":n",$nome); $sql->bindValue(":t",$telefone); $sql->bindValue(":e",$email); $sql->bindValue(":s",$senha); $sql->execute(); Por que não poderia assim?
      $sql = $pdo->prepare("INSERT INTO usuarios (nome, email, telefone, senha) VALUES ($nome, $telefone, $email $senha)"); $sql->execute();  
    • Por Jefferson andre
      ola, 
      Alguem poderia me ajudar a salvar um campo data usando pdo por favor, minhas duvidas estao no seguinte:
       
      O campo no insert precisa ter sido instanciado como data antes de salvar ?
       
      Eh possivel alterar o campo data antes de salvar usando bindvalue?
       
      O trecho abaixo do bindvalue esta correto ou precisa por parametros de data para ser salvo ?
      <form> (...) trecho form                 <div class="form-group col-md-3">                   <label for="inputEmail4">Data de termino</label>                   <input type="date" name="dtfim" id="dtfim" class="form-control" aria-label="" aria-describedby="inputGroup-sizing-sm">                 </div> salvaroscampos (...) trecho php     $filtro->bindValue(":dtfim", $dtfim);  
    • Por durrib
      Olá, pessoal.
      Meu provedor não autoriza mais Banco Access, então fui obrigado migrar para o MySQL e estou "apanhando", rs...
      Consegui criar a primeira Tabela de Insert de email's. Aí que vem o drama, problemas no auto_increment e blá blá...
      Consegui o primeiro passo, o Insert, mas o resto não estou conseguindo assimilar.
      Prefiro continuar os script's no ASP, se tiver que ir pro PHP, eu desisto.
      -->
       
      'Windows 2012
          'Criamos o objeto de conexão
       Set conn = Server.CreateObject("ADODB.Connection")
          'Abrimos uma conexão com o banco de dados
          '[IMPORTANTE] altere os dados abaixo com as informações de sua base de dados
      Conn.Open("DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=XXX;PORT=3306;DATABASE=XXX;USER=XXX;PASSWORD=XXX;OPTION=3;")
      Response.Write "banco conectado"
          'Fechamos a conexão com o banco de dados
      Conn.Close()
          'Destruímos o objeto
      Set Conn = Nothing
      -->
       
      Está conectando, mas na hora da listagem, nada!
      HELP!
       
       
    • Por jefferson919
      Pessoal, 
       
      Estou tentando criar um registro de log de operação em php, mas não consigo fazer as duas operações de forma alguma. Só faz uma não importa o que eu faça. Estou com o seguinte codigo:
       
      <?php // Sessão session_start(); // Conexão require_once 'db_connect.php'; if(isset($_POST['btn-delete'])): $id = mysqli_escape_string($connect, $_POST['usuario_id']); $idDeletador = $_SESSION['id_usuario']; $teste = 1; if ($teste==1): $sql = "INSERT INTO tb_log (log_data, log_usuario, log_menu, log_tipo) VALUES (now(), $idDeletador, 'Usuário', 'Deletar' );"; $novo=2; if ($novo==2): $sql = "DELETE FROM tb_usuario WHERE usuario_id = '$id';"; $_SESSION['mensagem'] = "Deletado com sucesso!"; header('Location: ../cruds/consultaUsuario.php'); else: $_SESSION['mensagem'] = "Erro ao deletar"; header('Location: ../comeco.php'); endif; else: $_SESSION['mensagem'] = "Erro ao deletar"; header('Location: ../index.php'); endif; //$sql = "INSERT INTO tb_log (log_data, log_usuario, log_menu, log_tipo) VALUES (now(), $idDeletador, 'Usuário', 'Deletar' );"; //$sql = "DELETE FROM tb_usuario WHERE usuario_id = '$id';"; if(mysqli_query($connect, $sql)): $_SESSION['mensagem'] = "Deletado com sucesso!"; header('Location: ../cruds/consultaUsuario.php'); else: $_SESSION['mensagem'] = "Erro ao deletar"; header('Location: ../cruds/consultaUsuario.php'); endif; endif;  
×

Informação importante

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