以下是检查行是否存在的经过尝试、测试和验证的方法。
(其中一些我自己用过,或者过去用过)。
编辑:我在我的语法中犯了一个错误,我使用了两次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_ with a prepared statement方法:
$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;
}
}
}
Or a PDO method with a prepared statement:
<?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 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.";
}
}
?>
注意:
在处理上面使用/概述的表单和 POST 数组时,请确保 POST 数组包含值,POST 方法用于表单并匹配输入的命名属性。
- 仅供参考:如果没有明确指示,表单默认为 GET 方法。
注意:<input type = "text" name = "var"> - $_POST['var'] 匹配。 $_POST['Var'] 不匹配。
咨询:
错误检查参考:
请注意 MySQL API 不会混合使用,以防您在访问此问答时使用 mysql_ 进行连接(和查询)。
请咨询以下内容:
如果您正在使用 mysql_ API 并且无法选择使用它,请参阅 Stack 上的以下问答:
mysql_* 函数已弃用,将从未来的 PHP 版本中删除。
您还可以向 (a) 行添加 UNIQUE 约束。
参考资料: