gpt4 book ai didi

php - 防止重复的条目sql php

转载 作者:行者123 更新时间:2023-12-01 16:20:03 24 4
gpt4 key购买 nike

我正在开发一个数据库系统,我正在尝试避免重复输入电子邮件和用户名。我已经尝试过,但它仍然被拒绝,但无法确切地看到被拒绝的内容。有人可以解释一下我错在哪里吗?

if(isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];

$sql="INSERT into users (username,password,email) VALUES('$username','$password','$email')";

$result = mysql_query("INSERT INTO users VALUES ('duplicate')");

if (!$result) {
echo "Enter a different value";
} else {
echo "Save successful.";

}
}

最佳答案

我制定这个答案只是为了向您展示检查重复项和插入的基础知识。

您最终应该对给定列设置 UNIQUE 约束,并根据错误结果使用条件语句。

请参阅下面有关安全性的脚注

旁注#1:如果您不想检查电子邮件和用户名是否都存在,可以删除OR Username= '".$username."'

旁注 #2: - 我不确定您的列名称是否混合大小写,因此您可能需要进行一些调整。

  • 电子邮件或电子邮件 - 密码或密码 - 用户名或用户名

旁注 #2: - 确保所有元素都包含 name 属性,并且表单确实使用 POST 方法。

先查询,如果用户/邮箱不存在,则执行INSERT。

假设您已经建立了 DB connection :(请参阅脚注下方“建立数据库连接”下的其他注释)。

if(isset($_POST['submit'])){

$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];

$query = "SELECT * FROM users
where email='".$email."'
OR Username= '".$username."'";

$result = mysql_query($query);

if(mysql_num_rows($result) > 0){
echo "A record already exists.";
exit;
}

else{
$insert = mysql_query("INSERT into users (email, Username, Password)
VALUES ('".$email."','".$username."', '".$password."')");
}

if($insert){
echo "Success";
}

else{
echo "There was an error " . mysql_error();
}

mysql_close();

} // brace for if(isset($_POST['submit']))
<小时/>

你也可以替换

$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];

$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);

为了增加一些安全性,直到您开始使用准备好的语句。

<小时/>

脚注:

关于安全。

不要使用旧的 mysql_ API,也不应该以纯文本形式存储密码。

使用mysqli with prepared statements ,或PDO with prepared statements

对于密码存储,请使用 CRYPT_BLOWFISH或 PHP 5.5 的 password_hash()功能。

对于 PHP < 5.5,请使用 password_hash() compatibility pack .

<小时/>

将错误报告添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告只能在暂存阶段完成,而不能在生产阶段完成。

<小时/>

建立数据库连接:

即来自 mysql_select_db() 的手册:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}

关于php - 防止重复的条目sql php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27952382/

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