2011-06-02 103 views
2

我做了一個用於在mysql上插入數據的php代碼。輸入數據兩次

if(isset($_POST['submitted'])){ 

$img = NULL; 
if(isset($_FILES['upload'])){ 

    include('classes/imagens.class.php'); 
    $imagem = new imagem($_FILES['upload']['name'],$_FILES['upload']['tmp_name'],$_FILES['upload']['size'],$_FILES['upload']['error']); 

      if($imagem->verifica_extensao($_FILES['upload']['type']) && $imagem->verifica_tamanho()){ 
       $erro = $imagem->upload(); 
       $img = $imagem->getNome(); 
      }    

} 

$trimmed = array_map('trim', $_POST); // usa a função trim() em todas as variáveis POST 
$tit = $cat = $dat = $end = $des = $pr = $dono = $hor = FALSE; // atribui falso para as variaveis que poderão receber as variaveis POST 

    $mysql = new mysql('eventos'); 

if(!empty($trimmed['nome'])){ 
    $tit = $mysql->escape_string($trimmed['nome']); 
} 

    if(!empty($trimmed['categoria'])){ 
    $cat = $mysql->escape_string($trimmed['categoria']); 
} 

    if(!empty($trimmed['data'])){ 
    $dat = $mysql->escape_string($trimmed['data']); 
} 

if($trimmed['hora'] != '--' && $trimmed['minuto'] != '--'){ 
      $hor = $trimmed['hora'].":".$trimmed['minuto']; 
    $hor = $mysql->escape_string($hor); 
} 

if(!empty($trimmed['endereco'])){ 
    $end = $mysql->escape_string($trimmed['endereco']); 
} 

    if(!empty($trimmed['descricao'])){ 
    $des = $mysql->escape_string($trimmed['descricao']); 
} 

    if(!empty($trimmed['preco'])){ 
    $pr = $mysql->escape_string($trimmed['preco']); 
} 

    $dono = $_SESSION['user_id']; 


    if($tit && $cat && $dat && $end && $des && $pr && $dono && $hor){ 

     $evento = new evento($tit, $cat, $end, $dat, $hor, $des, $pr, NULL, NULL, $img,$dono, NULL, NULL); 
     $evento->cadastrar(); 
     echo '<h3>Evento cadastrado com sucesso!</h3>'; 
     echo "<a href=".BASE_URL."><h1>Clique aqui para voltar para a página inicial</h1></a>"; 
    exit();  
    } 

    } 

和我的功能cadastrar()

function cadastrar(){ 
    $this->mysql->sql("INSERT INTO eventos (nome, categoria, data, endereco, descricao,ref_imagem,preco,user_id, hora, data_registro) VALUES ('$this->Titulo','$this->Categoria','$this->Data','$this->Endereco','$this->Descricao','$this->RefImagem','$this->Preco','$this->Dono','$this->Horario',NOW())"); 
} 

和我的功能SQL()

function sql($query){ 
      $this->connect(); 
      $this->query = $query; 
      if(mysqli_query($this->dbc,$this->query)){ 
        $linhas_afetadas = mysqli_affected_rows($this->dbc); 
        echo $query; 
        $this->result=mysqli_query($this->dbc,$this->query); 
        $this->disconnect(); 
        $retorno = array($this->result,$linhas_afetadas); 
        return $retorno; 
      } else { 
        die("Ocorreu um erro ao executar a Query SQL abaixo:<br>$query"); 
        $this->disconnect(); 
      } 

    } 

和......結果在桌子上2個相同的列。

+1

那麼問題是什麼? – 2011-06-02 15:24:01

+0

和...結果是在桌子上有兩個相同的列。 – Gabriel 2011-06-02 15:24:32

+0

我假設你的意思是行? – Swift 2011-06-02 15:28:39

回答

5

每當您撥打mysqli_query時,都會向數據庫啓動查詢。你這樣做了兩次:

if (mysqli_query(...)) 
{ 
    .... 
    $this->result = mysqli_query(...); 
} 

所以這就是爲什麼你以重複數據結束。

+0

謝謝@CarlosCampderrós! – Gabriel 2011-06-02 15:39:17