如何检查MySQL中是否存在行?(即检查MySQL中是否存在电子邮件)-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

如何检查MySQL中是否存在行?(即检查MySQL中是否存在电子邮件)

保持可爱mmm 2020-05-08 10:31:11 82

我需要帮助检查数据库中是否存在行。就我而言,该行包含一个电子邮件地址。我得到结果:

email no longer exists publisher@example.com 这是我当前正在使用的代码:

if (count($_POST)) { $email = $dbl->real_escape_string(trim(strip_tags($_POST['email'])));

$query = "SELECT `email` FROM `tblUser` WHERE `email` = '$email'";
$result = mysqli_query($dbl, $query);
if (is_resource($result) && mysqli_num_rows($result) == 1) {
    $row = mysqli_fetch_assoc($result);
    echo $email . " email exists " .  $row["email"] . "\n";
} else {
    echo "email no longer exists" . $email . "\n";
}

} 有没有更好的方法来检查MySQL中是否存在行(在我的情况下,检查MySQL中是否存在电子邮件)?

关系型数据库 MySQL 数据库
分享到
取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2020-05-08 10:36:18

    以下是经过尝试,测试和证明的检查行是否存在的方法。

    (其中一些我自己使用,或者过去使用过)。

    编辑:我在使用mysqli_query()两次的语法中犯了一个先前的错误。请查阅修订版本。

    即:

    if (!mysqli_query($con,$query))应该简单地读为if (!$query)。

    我为忽略该错误表示歉意。 旁注:两者'".$var."'和'$var'做相同的事情。您可以使用任何一种,两者都是有效的语法。

    这是两个已编辑的查询:

    $query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'");

    if (!$query)
    {
        die('Error: ' . mysqli_error($con));
    }
    

    if(mysqli_num_rows($query) > 0){

    echo "email already exists";
    

    }else{

    // do something
    

    } 和你的情况:

    $query = mysqli_query($dbl, "SELECT * FROM tblUser WHERE email='".$email."'");

    if (!$query)
    {
        die('Error: ' . mysqli_error($dbl));
    }
    

    if(mysqli_num_rows($query) > 0){

    echo "email already exists";
    

    }else{

    // do something
    

    } 您还可以将其mysqli_与准备好的语句方法一起使用:

    $query = "SELECT email FROM tblUser WHERE email=?";

    if ($stmt = $dbl->prepare($query)){

        $stmt->bind_param("s", $email);
    
        if($stmt->execute()){
            $stmt->store_result();
    
            $email_check= "";         
            $stmt->bind_result($email_check);
            $stmt->fetch();
    
            if ($stmt->num_rows == 1){
    
            echo "That Email already exists.";
            exit;
    
            }
        }
    }
    

    或带有准备好的语句的PDO方法:

    setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { exit( $e->getMessage() ); } // assuming a named submit button if(isset($_POST['submit'])) { try { $stmt = $conn->prepare('SELECT `email` FROM `tblUser` WHERE email = ?'); $stmt->bindParam(1, $_POST['email']); $stmt->execute(); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } if($stmt->rowCount() > 0){ echo "The record exists!"; } else { echo "The record is non-existant."; } } ?> 最好使用预处理语句来帮助防止SQL注入。 注意:

    在处理上面使用/概述的表单和POST数组时,请确保POST数组包含值,表单使用POST方法,并且输入要匹配命名属性。

    仅供参考:如果未明确指示,则窗体默认为GET方法。 注意:- $_POST['var']匹配。$_POST['Var']没有匹配。

    POST数组区分大小写。 请教:

    http://php.net/manual/zh/tutorial.forms.php 错误检查参考:

    http://php.net/manual/en/function.error-reporting.php http://php.net/manual/zh/mysqli.error.php http://php.net/manual/zh/pdo.error-handling.php 请注意,如果您正在访问此问答,并且正在使用mysql_进行连接(并进行查询),MySQL API不会混在一起。

    从连接到查询,您必须使用同一地址。 请咨询以下内容:

    我可以在PHP中混合使用MySQL API吗? 如果您使用的是mysql_API,但别无选择,请在堆栈上咨询以下问答:

    MySQL PHP:检查行是否存在 该mysql_*功能已弃用,并将从以后的PHP版本中删除。来源:stack overflow

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程