栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

编辑: 我在使用

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方法

<?php$email = $_POST['email'];$mysql_hostname = 'xxx';$mysql_username = 'xxx';$mysql_password = 'xxx';$mysql_dbname = 'xxx';try {$conn= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);} catch (PDOException $e) {     exit( $e->getMessage() );}// assuming a named submit buttonif(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方法。

注意:

<input type = "text" name = "var">
-
$_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版本中删除。

  • 现在是踏入21世纪的时候了。

您还可以向(a)行添加UNIQUE约束。

参考文献:

  • http://dev.mysql.com/doc/refman/5.7/en/constraint-primary-key.html
  • http://dev.mysql.com/doc/refman/5.7/en/alter-table.html
  • 如何检查值是否已经存在以避免重复?
  • 如何将唯一键添加到现有表(具有非唯一行)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368080.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号