Php 外键无法在子表中添加行,尽管显然需要处理一些事情

Php 外键无法在子表中添加行,尽管显然需要处理一些事情,php,mysql,Php,Mysql,以下代码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'

以下代码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,constraint users\u ibfk\u 1外键inst\u id在更新级联的删除级联上引用institutes inst\u id

INSERT INTO users语句没有为inst_id列提供值。当该语句运行时,inst_id列将为表中声明为列定义一部分的列指定默认值。默认值也可以由插入前触发器中的赋值覆盖

MySQL错误表示插入到users表中的行具有inst_id值,该值在引用的父表中的exist中不存在

如果要引用刚插入institutes表的行,则需要检索刚插入的行的inst_id列的值

如果institutes中的inst_id是一个自动增量列,那么在INSERT INTO institutes语句之后,可以立即检索分配的值。有几种机制可以做到这一点。MySQL提供了最后一个插入ID函数

PHP MySQL库提供自己的函数,以便更轻松地访问此函数返回的值

不推荐使用的mysql扩展


请注意文档中关于使用mysqli或PDO而不是mysql扩展名的警告。

很抱歉,父表中的行是在子表之前的父表中创建的!而不是在子表之前创建的父表。