Php 如何检查MySQL中是否存在行?(即检查MySQL中是否存在电子邮件)
我需要帮助检查数据库中是否存在行。在我的例子中,该行包含一个电子邮件地址。我得到的结果是:Php 如何检查MySQL中是否存在行?(即检查MySQL中是否存在电子邮件),php,mysql,mysqli,pdo,Php,Mysql,Mysqli,Pdo,我需要帮助检查数据库中是否存在行。在我的例子中,该行包含一个电子邮件地址。我得到的结果是: 电子邮件不再存在publisher@example.com 这是我当前使用的代码: if (count($_POST)) { $email = $dbl->real_escape_string(trim(strip_tags($_POST['email']))); $query = "SELECT `email` FROM `tblUser` WHERE `email` = '$
电子邮件不再存在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中是否存在电子邮件)?您必须执行查询并在查询中向$email添加单引号,因为它是一个字符串,并删除
Is\u resource($query)
$query是一个字符串,$result将是资源
$query = "SELECT `email` FROM `tblUser` WHERE `email` = '$email'";
$result = mysqli_query($link,$query); //$link is the connection
if(mysqli_num_rows($result) > 0 ){....}
更新
在您的编辑库中,只需更改:
if(is_resource($query) && mysqli_num_rows($query) > 0 ){
$query = mysqli_fetch_assoc($query);
echo $email . " email exists " . $query["email"] . "\n";
借
你会没事的
更新2
更好的方法应该是有一个存储过程来执行以下SQL,并将电子邮件作为参数传递
SELECT IF( EXISTS (
SELECT *
FROM `Table`
WHERE `email` = @Email)
, 1, 0) as `Exist`
并检索php中的值
Pseudocodigo:
$query = Call MYSQL_SP($EMAIL);
$result = mysqli_query($conn,$query);
$row = mysqli_fetch_array($result)
$exist = ($row['Exist']==1)? 'the email exist' : 'the email doesnt exist';
您必须执行查询并在查询中向$email添加单引号,因为它是一个字符串,并删除
is\u资源($query)
$query是一个字符串,$result将是资源
$query = "SELECT `email` FROM `tblUser` WHERE `email` = '$email'";
$result = mysqli_query($link,$query); //$link is the connection
if(mysqli_num_rows($result) > 0 ){....}
更新
在您的编辑库中,只需更改:
if(is_resource($query) && mysqli_num_rows($query) > 0 ){
$query = mysqli_fetch_assoc($query);
echo $email . " email exists " . $query["email"] . "\n";
借
你会没事的
更新2
更好的方法应该是有一个存储过程来执行以下SQL,并将电子邮件作为参数传递
SELECT IF( EXISTS (
SELECT *
FROM `Table`
WHERE `email` = @Email)
, 1, 0) as `Exist`
并检索php中的值
Pseudocodigo:
$query = Call MYSQL_SP($EMAIL);
$result = mysqli_query($conn,$query);
$row = mysqli_fetch_array($result)
$exist = ($row['Exist']==1)? 'the email exist' : 'the email doesnt exist';
以下是检查行是否存在的经过尝试、测试和验证的方法 (其中一些是我自己用的,或者过去用过的) Edit:我之前在语法中犯了一个错误,我使用了两次
mysqli\u 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
}
您还可以使用以下方法:
:
- 准备好的语句最好用于帮助防止SQL注入
N.B.:
$query = Call MYSQL_SP($EMAIL);
$result = mysqli_query($conn,$query);
$row = mysqli_fetch_array($result)
$exist = ($row['Exist']==1)? 'the email exist' : 'the email doesnt exist';
在处理上述使用/概述的表单和POST数组时,请确保POST数组包含值,表单使用POST方法,并匹配输入的命名属性
- 仅供参考:如果没有明确指示,表单默认为GET方法
-$\u POST['var']
匹配<代码>$\u POST['Var']不匹配
- POST数组区分大小写
MySQL\uuz
连接(和查询)
- 从连接到查询必须使用相同的
mysql\uu
API,并且没有选择使用它,那么请参考以下关于堆栈的问答:
mysql.*
函数已弃用,将从未来的PHP版本中删除
- 是时候跨入21世纪了
您还可以向(a)行添加唯一约束。 参考资料:
mysqli\u 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
}
您还可以使用以下方法:
:
- 准备好的语句最好用于帮助防止SQL注入
N.B.:
$query = Call MYSQL_SP($EMAIL);
$result = mysqli_query($conn,$query);
$row = mysqli_fetch_array($result)
$exist = ($row['Exist']==1)? 'the email exist' : 'the email doesnt exist';
在处理上述使用/概述的表单和POST数组时,请确保POST数组包含值,表单使用POST方法,并匹配输入的命名属性
- 仅供参考:如果没有明确指示,表单默认为GET方法
-$\u POST['var']
匹配<代码>$\u POST['Var']不匹配
- POST数组区分大小写
MySQL\uuz
连接(和查询)
- 从连接到查询必须使用相同的
mysql\uu
API,并且没有选择使用它,那么请参考以下关于堆栈的问答:
mysql.*
函数已弃用,将从未来的PHP版本中删除
- 是时候跨入21世纪了
您还可以向(a)行添加唯一约束。 参考资料: