如何解决PHP检查重复的证书编号MySQL表
| 我有一个接受多个输入然后将其提交到数据库的表单,但是有一个字段保存记录的证书编号,我想在插入数据之前查询数据库以确保证书编号不存在。输入字段时(即用户在字段中跳出然后显示通知时),我可以这样做吗? 如果是这样的话,有人可以发布一个有关如何执行此操作的示例。 MysqL表称为-合同 MysqL字段称为-guarantee_no 表单POST \的create.PHP(下面的代码)<?PHP
include \"includes/connection.PHP\";
$installer = $_POST[\'inputInstaller\'];
$fitter = $_POST[\'inputFitter\'];
$guarantee = $_POST[\'inputGuaratnee_no\'];
$equipment = $_POST[\'inputEquipment\'];
$certificate = $_POST[\'inputCertificate_no\'];
$installed = $_POST[\'inputInstall_date\'];
if(!$_POST[\'submit\']){
echo \"Please Enter Data into the Form\";
printf(\"<script>location.href=\'index.PHP\'</script>\");
} else {
MysqL_query(\"INSERT INTO contract (`id`,`user_id`,`installer`,`fitter`,`guarantee_no`,`contact_id`,`equipment`,`certificate_no`,`install_date`)
VALUES(NULL,\'1\',\'$installer\',\'$fitter\',\'$guarantee\',NULL,\'$equipment\',\'$certificate\',\'$installed\')\") or die(MysqL_error());
echo \"Guarantee Record was Added,Thank You!\";
printf(\"<script>location.href=\'index.PHP\'</script>\");
}
?>
谢谢您的帮助
解决方法
根据您的问题。如果要在PHP中使用该验证。您可以使用
$_SESSION
变量。
在您的操作文件中。
采用:
<?php
session_start();
include \"includes/connection.php\";
$installer = $_POST[\'inputInstaller\'];
$fitter = $_POST[\'inputFitter\'];
$guarantee = $_POST[\'inputGuaratnee_no\'];
$equipment = $_POST[\'inputEquipment\'];
$certificate = $_POST[\'inputCertificate_no\'];
$installed = $_POST[\'inputInstall_date\'];
if($installer == \'\' || $fitter == \'\' || $guarantee == \'\' || $equipment == \'\' || $certificate == \'\' || $installed == \'\'){
$_SESSION[\'status\'] = \'error\';
} else {
mysql_query(\"INSERT INTO contract (`id`,`user_id`,`installer`,`fitter`,`guarantee_no`,`contact_id`,`equipment`,`certificate_no`,`install_date`)
VALUES(NULL,\'1\',\'$installer\',\'$fitter\',\'$guarantee\',NULL,\'$equipment\',\'$certificate\',\'$installed\')\") or die(mysql_error());
$_SESSION[\'status\'] = \'success\';
}
header(\"location: index.php\");
?>
现在在您的index.php
文件中。
在顶部使用:
<?php
session_start();
if($_SESSION[\'status\'] == \'error\') {
$msg = \"Fill all form fields\";
}
if ($_SESSION[\'status\'] == \'success\'){
$msg = \"Record succesfully added\";
}
?>
现在在要打印消息的位置使用那个“ 5”变量。
喜欢:
<?php echo isset($msg) ? $msg : \'\' ?>
注意:如果您不想重新加载页面,则应使用带有PHP的Ajax。这只是简单的方法。您可以相应地使用。
希望可以帮助..欢呼.. !!
, 您可以自己对其进行编程,但是由于客户端无法知道所有用户名,因此您必须询问服务器。提交后,告诉用户名称已使用,或者使用AJAX。
但是我建议您使用许多已经编写的插件之一。
我强烈建议使用jQuery Validator插件-他们有一个可以完全满足您需要的示例,您可以看到它们使用的代码。
, “制表符”是可行的,但需要使用AJAX系统进行检查。这样的系统很容易受到竞争条件的影响(例如,退出系统,一切正常,但是在10秒钟内用户到达鼠标并单击提交,其他人创建了相同的记录),因此您仍然需要提交以及时间检查。
对于服务器端检查,您只需执行一次“ 7”查询以查找证书编号,并且如果返回任何行,则表明正在使用证书编号。如果正在使用中,则不要执行插入操作。为了获得更好的安全性,您需要添加一些事务并锁定到组合中,以使检查和插入之间的时间不易受到其他用户的偷猎。
, 您将不得不使用AJAX。最好的选择就是使用jQuery.ajax
您需要如下所示的javascript:
$(\"#your_form_element\").blur(function(){
$.ajax({
url: \"test_for_dupe.php?val=\" & $(this).val(),context: document.body,success: function(){
alert(\"Certificate already in DB!\");
};
});
};
这是一个通用示例。您的字段必须具有ID =your_form_element
,并且需要一个名为test_for_dupe.php
的PHP文件来运行查询。您可能应该看一下jQuery示例并尝试解决这个问题。如果您需要更多帮助,请发布另一个问题。希望这能帮助您前进。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。