如何使用php检查表单上的重复条目?我的前端是c#windows application
我正在使用c#和php文件向数据库添加新用户。
我创建了以下内容:
我在c#中的项目( form1 ):
c#编码:
private void btncreate_Click(object sender, EventArgs e)
{
var request = (HttpWebRequest)WebRequest.Create("http://***.**.***.***/response.php");
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
using (var stream = request.GetRequestStream())
{
var buffer = Encoding.UTF8.GetBytes("userid= " + txtUserid.Text + " & password=" + txtConformpassword.Text + " & first_name=" + txtFirstname.Text + " & last_name=" + txtLastName.Text + "& role= " + cmbRole.Text + "& active=" + cmbActive.Text + "");
stream.Write(buffer, 0, buffer.Length);
}
var response = (HttpWebResponse)request.GetResponse();
string result = String.Empty;
using (var reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();
}
txtMessage.Text = result;
}
我的PHP文件: response.php
<?php
$uid = $_POST['userid'];
$pass = $_POST['password'];
$fname = $_POST['first_name'];
$lname = $_POST['last_name'];
$rol = $_POST['role'];
$act = $_POST['active'];
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql= "INSERT INTO aster(userid,password,first_name,last_name,role,active)
VALUES('$uid', '$pass', '$fname','$lname','$rol','$act');";
if ($conn->query($sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
它成功添加数据但是当我在文本框中输入相同的用户ID并单击创建按钮时,我需要在txtmessage中收到错误消息,因为用户ID已经存在。
我搜索谷歌搜索,但我没有任何关于重复输入的事情请参考我一些编码
答案 0 :(得分:3)
您可以扩展response.php
以在insert
之前执行选择语句。如果您能够选择具有给定ID的记录,则产生响应(实际上是错误代码),然后C#应用程序将解释并显示给用户。
作为旁注,由于ID字段看起来是数字,您可以简单地从表单中省略它,让DB自动增加它。这也意味着用户不必猜测哪些ID值可用。
答案 1 :(得分:3)
您只是希望下次不要插入您输入的ID。为此,你只需要做一件事。将您的id作为数据库表创建中的主键,执行此操作后,您将无法再次插入该ID,或者主键中不允许重复输入。
知道它是否有用。
答案 2 :(得分:2)
这可能没那么多,但我认为我的解释会指出你正确的方向。
我要做的是:
我不知道任何PHP编码,但您可以尝试找到比较字符串的方法。但这是一个检查SQL中存在的记录的例子:
Declare @Username varchar(MAX) = 'Justin Yen'
IF EXISTS(select Username from EmployeTable where Username = @Username)
begin print 'Record Exists' end
else
begin print 'Record does not exist' end
现在你所要做的就是变量匹配然后提示“无法创建记录,因为创建了记录”。否则使用你在php中添加的记录代码。
答案 3 :(得分:2)
您只需尝试将约束( UNIQUE / PRIMARY )添加到“userid&#39;”列。
ALTER TABLE aster ADD CONSTRAINT MyUniqueKey UNIQUE KEY(userid)