gpt4 book ai didi

php - 如何检查MySQL中是否存在某行? (即检查 MySQL 中是否存在用户名或电子邮件)

转载 作者:行者123 更新时间:2023-11-29 21:52:10 28 4
gpt4 key购买 nike

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

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 中是否存在电子邮件)?

最佳答案

使用 mysqli 准备好的语句 legacy approach :

$query = "SELECT 1 FROM `tblUser` WHERE email=?";
$stmt = $dbl->prepare($query);
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
$emailExists = (bool)$row;

使用 mysqli modern approach关注 PHP 8.2:

$query = "SELECT 1 FROM `tblUser` WHERE email=?";
$result = $dbl->execute_query($query, [$email]);
$row = $result->fetch_assoc();
$emailExists = (bool)$row;

使用 PDO prepared statement :

$email = $_POST['email'];
$stmt = $conn->prepare('SELECT 1 FROM `tblUser` WHERE email = :email');
$stmt->execute(["email" => $_POST['email']]);
$row = $result->fetch();
$emailExists = (bool)$row;
  • 最好使用准备好的语句来帮助防止 SQL 注入(inject)。
<小时/>

注意:

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

  • 仅供引用:如果没有明确指示,表单默认使用 GET 方法。

注:<input type = "text" name = "var"> -$_POST['var']匹配。 $_POST['Var']没有匹配。

  • POST 数组区分大小写。

咨询:

检查引用时出错:

请注意,MySQL API 不会混合使用,以防您在访问此问答时使用 mysql_连接(并查询)。

  • 从连接到查询,您必须使用同一个。

有关此问题请参阅以下内容:

如果您使用 mysql_ API 并且没有选择使用它,那么请查阅 Stack 上的以下 Q&A:

mysql_*函数已弃用,并将从 future 的 PHP 版本中删除。

  • 是时候迈入 21 世纪了。
<小时/>

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

引用文献:

How add unique key to existing table (with non uniques rows)

关于php - 如何检查MySQL中是否存在某行? (即检查 MySQL 中是否存在用户名或电子邮件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33532997/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com