以下代码(reg_org.php)用于注册:
<?php
session_start();
if(!empty($_POST))
{
$msg="";
if(empty($_POST['org_name']) || empty($_POST['org_domain']) || empty($_POST['org_admin_name']) || empty($_POST['org_admin_email']) || empty($_POST['org_admin_pass1']) || empty($_POST['org_admin_pass2']))
{
$msg.="<li>Please full fill all requirement";
}
if($_POST['org_admin_pass1']!=$_POST['org_admin_pass2'])
{
$msg.="<li>Please Enter your Password Again.....";
}
if(!ereg("^[a-z0-9_]+[a-z0-9_.]*@[a-z0-9_-]+[a-z0-9_.-]*\.[a-z]{2,5}$",$_POST['org_admin_email']))
{
$msg.="<li>Please Enter Your Valid Email Address...";
}
if(strlen($_POST['org_admin_pass1'])>20)
{
$msg.="<li>Please Enter Your Password in limited Format....";
}
if(is_numeric($_POST['org_name']) || is_numeric($_POST['org_admin_pass1']))
{
$msg.="<li>Names must be in String Format...";
}
if($msg!="")
{
header("location:index.php?error=".$msg);
}
else
{
$orgname = $_POST['org_name'];
$orgdmn = $_POST['org_domain'];
$orgadmin = $_POST['org_admin_name'];
$orgadminmail = $_POST['org_admin_email'];
$orgadminpass = $_POST['org_admin_pass1'];
$link=mysql_connect("localhost","root","")or die("Can't Connect...");
mysql_select_db("educon",$link) or die("Can't Connect to Database...");
$query="insert into institutes(inst_nm,inst_dmn)
values('$orgname','$orgdmn')";
$res = mysql_query($query,$link) or die("Can't Execute Query... ".mysql_error());
$query="insert into users(u_name,u_pwd,u_email,u_type)
values('$orgadmin','$orgadminpass','$orgadminmail','admin')";
$res = mysql_query($query,$link) or die("Can't Execute Query... ".mysql_error());
$_SESSION=array();
$_SESSION['unm']=$orgadmin;
$_SESSION['type']="admin";
$_SESSION['status']=true;
header('location:profile_admin.php');
}
}
else
{
header("location:index.php");
}
?>在代码中,根据规则,在子表(用户)之前创建父表(研究所),子列与父列相同,但我面临以下问题:
不能执行查询。无法添加或更新子行:外键约束失败(
educon.users、constraintusers_ibfk_1REFERENCES (inst_id)引用institutes(inst_id)在更新级联上的删除级联)
发布于 2015-10-31 23:27:00
INSERT INTO users语句没有为inst_id列提供值。当该语句运行时,将为inst_id列分配该列的默认值(声明为表中列定义的一部分)。默认值也可以被“前插入”触发器中的赋值覆盖。
MySQL错误指示插入到users表中的行具有inst_id的值,该值在引用(父) institutes表中的institutes表中不存在。
如果要引用刚才插入到institutes表中的行,则需要检索刚刚插入的行的inst_id列的值。
如果inst_id in institutes是一个AUTO_INCREMENT列,那么在INSERT INTO institutes语句之后,您可以检索指定的值。有几种机制可以做到这一点。MySQL提供LAST_INSERT_ID()函数..。
PHP库提供自己的函数,以便更容易地访问该函数返回的值。
不推荐的mysql_扩展
http://php.net/manual/en/function.mysql-insert-id.php
(请注意有关使用mysqli或PDO而不是扩展的文档中的警告。)
https://stackoverflow.com/questions/33123486
复制相似问题