小编典典
以下是经过尝试,测试和证明的检查行是否存在的方法。
(其中一些我自己使用,或者过去使用过)。
编辑: 我在使用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
}
$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;
}
}
}
$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.";
}
}
?>
最好使用预处理语句来帮助防止SQL注入。
注意:
当按上面使用/概述的方式处理表单和POST数组时,请确保POST数组包含值,该表单使用POST方法,并且输入要匹配命名属性。
仅供参考:如果未明确指示,则窗体默认为GET方法。
注意:-
$_POST['var']匹配。$_POST['Var']没有匹配。
POST数组区分大小写。
请教:
错误检查参考:
请注意,如果您正在访问此问答,并且正在使用mysql_进行连接(并进行查询),MySQL API不会混在一起。
从连接到查询,您必须使用同一地址。
请咨询以下内容:
如果您使用的是mysql_API,但别无选择,请在堆栈上咨询以下问答:
该mysql_*功能已弃用,并将从以后的PHP版本中删除。
现在是踏入21世纪的时候了。
您还可以向(a)行添加UNIQUE约束。
参考文献:
2020-05-17