php - 使用 php 和外键插入选项 - 不可能

标签 php mysql database phpmyadmin

我正在构建一个简单的网络数据库连接,但是当我为我的表分配一个外键时,我无法通过 html-php 插入数据。 谁能检查我的代码并给我任何建议/想法:

person 表主键是 ID 外键:KEY boardname (boardname), KEY depname (depname)

board Table Primary key is boardname

部门表主键是depname

人物表

   CREATE TABLE IF NOT EXISTS `person` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) NOT NULL,
  `surname` varchar(10) NOT NULL,
  `boardname` varchar(10) NOT NULL,
  `bsdate` date NOT NULL,
  `budate` date NOT NULL,
  `depname` varchar(10) NOT NULL,
  `desdate` date NOT NULL,
  `deudate` date NOT NULL,
  PRIMARY KEY (`id`),
  KEY `boardname` (`boardname`),
  KEY `depname` (`depname`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;

板表

    CREATE TABLE IF NOT EXISTS `board` (
  `boardname` varchar(10) NOT NULL,
  `boarddesc` text NOT NULL,
  PRIMARY KEY (`boardname`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

部门表

CREATE TABLE IF NOT EXISTS `deparment` (
  `depname` varchar(10) NOT NULL,
  `depcomment` text NOT NULL,
  PRIMARY KEY (`depname`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

现在我正在使用这个简单的脚本在数据库中插入数据但它不起作用我不知道为什么,但是当我从 person 表中删除外键时它正在工作。任何建议,我必须保留外键。

下面是html php代码:

HTML 格式

<body>
  <h1>New Student</h1>

  <form action="insert_student.php" method="post">
    <table border="1">
     <tr>
        <td>ID</td>
         <td><input type="text" name="id" maxlength="30" size="13"></td>
      </tr>
      <tr>
      <tr>
        <td>First Name</td>
         <td><input type="text" name="name" maxlength="30" size="13"></td>
      </tr>
      <tr>
        <td>Last Name</td>
        <td> <input type="text" name="surname" maxlength="30" size="30"></td>
      </tr>
    <tr>
        <td>Board Member From/Until</td>
         <!--<td><input type="text" name="boardid" maxlength="7" size="7"></td>-->
        <td><input type="date" name="bsdate" value="ICS" /><!--FSR-->
            <input type="date" name="budate" value="Infor" />
        </td>
      </tr> 
      <tr>
        <td>Department From/Until</td>
       <!-- <td> <input type="text" name="depname" maxlength="30" size="30"></td>-->
        <td><input type="date" name="desdate" value="ASE" />
            <input type="date" name="deudate" value="WEB" />
        </td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" value="Register"></td>
      </tr>
    </table>
  </form>
</body>

PHP 插入

<?php

  @ $db = new mysqli('localhost', 'e_kolori', 'kolori1515', 'e_color');

  if (mysqli_connect_errno()) 
  {
     echo 'Error: Could not connect to database.  Please try again later.';
     exit;
  }

  $query = "INSERT INTO person (name, surname, bsdate, budate, desdate, deudate) VALUES 
  ('$_POST[name]', '$_POST[surname]', '$_POST[bsdate]', '$_POST[budate]', '$_POST[desdate]', '$_POST[deudate]')";

  $result = $db->query($query);
  if ($result)
      echo  $db->affected_rows.' student inserted into database.'; 

  $db->close();
?>

最佳答案

您的表指定所有字段都是必需的。

您的插入语句缺少“depname”和“boardname”的值。

此外,(可能不相关但值得检查)您的“董事会”和“部门”表中必须存在相关条目,您才能插入引用它们的记录。

关于php - 使用 php 和外键插入选项 - 不可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38397522/

相关文章:

javascript - 如何将 Oracle Date 对象/Long 转换为 javascript 日期?

mysql - 如何构建周末+年度休息/休息日组合存储的数据库?

PHP PDO 插入数据

Php, Mysql Select from table where row = ?有可能的?

php - 查找另一个unix时间戳mysql同一天内的所有记录

mysql - 使用 db2 配置 mysql 链接服务器

mysql - 在 mysql 表中添加/保存/插入代码后无法正确显示 C/C++ 代码

php - 我如何使用 php 检测任何手机导航器?

PHP/MYSQL session - 打印当前用户名

php - 使用 mysqli 调用连接数据库的方法