php - mysql更新语句总是插入

标签 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));
    }

最佳答案

如果您不小心,您的 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));
}

关于php - mysql更新语句总是插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28443756/

相关文章:

php - PHP项目中 "Source files"和 "Include path"有什么区别?

php - 通过将现有数组中的键剪切到新数组来创建新数组

php - Laravel 函数 :popular(), active()、ofType() 等

php - 如何将按钮添加到此 wordpress 导航栏中?

mysql - 显示此存储过程的注入(inject)攻击

php - 登录并绕过登录屏幕

php - Arduino 和网络服务器之间的连接监控

mysql - 如何获取 MySQL 中变量的类型?

mysql - MySQLWorkbench 是否包含 MySQL 服务器?

php - 如何智能地比较两个表?