php - 输入数据两次

标签 php mysql oop

我编写了一个在 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 个相同的列。

最佳答案

每次调用mysqli_query时,都会向数据库启动一个查询。您这样做了两次:

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

这就是为什么你会以重复的数据结束。

关于php - 输入数据两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216611/

相关文章:

php - 模态显示变量的所有记录,而它应该显示一个?

mysql 所有数据来自 5 个表 WHERE

c++ - C 字符串在 C++ 的显式构造函数中赋值?

python - Python 是否支持文字对象之类的东西?

NodeJS 中的 JavaScript OOP : how?

php - 使用 store.php 将 TiddlyWiki 5 保存到服务器

php - 从日期中减去天数

Javascript 验证电子邮件制作问题

php - 用户友好的 URL 而不是查询字符串?

mysql - 选择所有连接行都匹配的记录