选择在单个查询中插入mysql时抛出“重复条目”的行

选择在单个查询中插入mysql时抛出“重复条目”的行,mysql,mysqli,Mysql,Mysqli,如何检索插入期间抛出“重复条目”的行 “mtable”结构 我正在尝试在mtable中插入一行,我的要求是,如果电子邮件存在,则获取整行,否则它将向表中插入新值并返回insert success只需尝试此select*from mtable where email=>example@example.com'如果已存在大于0的电子邮件,请检查行数。如果不大于0,则不存在电子邮件 $stmt = $conn->prepare("SELECT * FROM mtable WHERE em

如何检索插入期间抛出“重复条目”的行

“mtable”结构

我正在尝试在mtable中插入一行,我的要求是,如果电子邮件存在,则获取整行,否则它将向表中插入新值并返回insert success

只需尝试此select*from mtable where email=>example@example.com'如果已存在大于0的电子邮件,请检查行数。如果不大于0,则不存在电子邮件

    $stmt = $conn->prepare("SELECT * FROM mtable WHERE email=? ");
    $stmt->bind_param('s',$email);
    $stmt->execute();
    $get_result =$stmt->get_result();
    $row_count= $get_result->num_rows;
    if($row_count>0)
    {
       //email already exists 
       $result = $get_result->fetch_assoc();
       print_r($result);
    }
    else
    {
        $stmt1 = $conn->prepare("insert into mtable(email,name)values(?,?)");
        $stmt1->bind_param('ss',$email,$name);
        $stm1->execute();
        $row_count1= $stmt1->affected_rows;
        if($row_count1>0)
        {
          echo "inserted successfully";
        }
         $stmt1->close();
         $conn->close();
    }

如果代码的量是您关心的,那么考虑PDO,因为它将为两个查询减少比一个

中的MySql少的代码。
$stmt = $conn->prepare("SELECT * FROM mtable WHERE email=? ");
$stmt->execute([$email]);
$row = $stmt->fetch();
if(!$row)
{
    $conn->prepare("insert into mtable(email,name)values(?,?)")->execute([$email,$name]);
}

只需尝试此选择*从mtable where email='1example@example.com'如果已经存在大于0的电子邮件,请检查行数。如果不大于0的电子邮件不存在,那么简单地用此电子邮件启动select查询如何?@JYoThI在执行单个查询时可以使用它吗insertion@YourCommonSense我不知道已经插入的电子邮件地址,当我尝试插入一行时,如果电子邮件重复,它将返回该行。你明白我的意思吗?如果你现在尝试插入,你怎么会不知道?!感谢您的回复,我知道这在多个查询中是可能的,我想知道在一个查询中是否可能。我认为在一个查询中是不可能的。我不确定这是不是“CLIFFORDPY”
$stmt = $conn->prepare("SELECT * FROM mtable WHERE email=? ");
$stmt->execute([$email]);
$row = $stmt->fetch();
if(!$row)
{
    $conn->prepare("insert into mtable(email,name)values(?,?)")->execute([$email,$name]);
}