mysql update语句总是插入

时间:2015-02-10 23:18:35

标签: php mysql

我有这个代码,我想更新如果$ mail已经在数据库中,并且如果不是,则插入,但它总是插入,无论如何,如果邮件已经存在,它会插入一个具有相同邮件的新行。请帮帮我,这是代码:

<?php
session_start();
include '../conexion.php';

$nombre=$_POST['Nombre'];
$apellido=$_POST['Apellido'];
$mail=$_POST['Mail'];
$telefono=$_POST['Telefono'];
$ultimaventa=$_POST['Numeroventa'];
$totalcomprado=0;
$ultimomonto=$_POST['Total'];
$resultado=mysqli_query($con,"select * from clientes")or die(mysqli_error($con));
$existe=false;

while($f=mysqli_fetch_array($resultado)){
if($f['Mail']!=$mail){
    $totalcomprado=$ultimomonto;
    $existe=false;
    }else{
        if($f['Mail'==$mail]){
            $totalcomprado=$f['totalcomprado']+$ultimomonto; 
            $existe=true;
            }
    }
}


if($existe==false){
    mysqli_query($con,"insert into      clientes(nombre,apellido,Mail,telefono,ultimaventa,ultimomonto,totalcomprado)values(
    '".$nombre."','".$apellido."','".$mail."','".$telefono."','".$ultimaventa."','".$ultimomonto."','".$ultimomonto."')")or die(mysqli_error($con));
    }

if($existe==true){
    mysqli_query($con,"update clientes SET nombre='".$nombre."', apellido='".$apellido."',Mail='".$mail."',telefono='".$telefono."',ultimaventa='".$ultimaventa."',ultimomonto='".$ultimomonto."',totalcomprado='".$totalcomprado."' WHERE Mail='".$mail."'")or die(mysqli_error($con));
    }

1 个答案:

答案 0 :(得分:0)

if(bool) {} else if (!bool) {}的模式很容易,如果你不小心,很容易导致错误。在这些情况下,只需使用else语句:

<?php
session_start();
include '../conexion.php';

$nombre        = $_POST['Nombre'];
$apellido      = $_POST['Apellido'];
$mail          = $_POST['Mail'];
$telefono      = $_POST['Telefono'];
$ultimaventa   = $_POST['Numeroventa'];
$totalcomprado = 0;
$ultimomonto   = $_POST['Total'];
$resultado = mysqli_query($con, "select 1 from clientes WHERE Mail='" . mysqli_real_escape_string($con, $mail) . "'") or die(mysqli_error($con));

$existe = mysqli_num_rows($resultado) > 0;

if ($existe) {
    mysqli_query($con, "UPDATE clientes SET nombre='" . $nombre . "', apellido='" . $apellido . "',Mail='" . $mail . "',telefono='" . $telefono . "',ultimaventa='" . $ultimaventa . "',ultimomonto='" . $ultimomonto . "',totalcomprado=totalcomprado+'" . mysqli_real_escape_string($con, $ultimomonto) . "' WHERE Mail='" . $mail . "'") or die(mysqli_error($con));
} else {
    mysqli_query($con, "INSERT INTO clientes(nombre, apellido, Mail, telefono, ultimaventa, ultimomonto, totalcomprado)values('" . $nombre . "','" . $apellido . "','" . $mail . "','" . $telefono . "','" . $ultimaventa . "','" . $ultimomonto . "','" . $ultimomonto . "')") or die(mysqli_error($con));
}