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

时间:2016-07-15 13:36:42

标签: php mysql database phpmyadmin

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

人员表主键是ID 外键:KEY boardnameboardname),               KEY depnamedepname

电路板表主键是电路板名称

deparment表主键是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;

现在即时通讯使用这个简单的脚本在数据库中插入数据,它不工作我不知道为什么,但当我从人员表中删除外键时它正在工作。任何消化,我都要保留外键。

下面是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();
?>

2 个答案:

答案 0 :(得分:0)

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

您的插入语句缺少&#39; depname&#39;的值和&#39; boardname&#39;。

此外,(可能不相关但值得检查)您的主板上必须有关联的条目&#39;和&#39;部门&#39;表之前插入引用它们的记录。

答案 1 :(得分:0)

Yepp通过删除php myadmin中的Not Null选项来纠正我能够从表单中插入数据但是当我用这两个字段 boardname departmentname 更新表单时这是我主表中的外键现在我无法将板名和depratmentname作为对象: by removing null working fine

这就是我的表单的样子: Insert Form looks like

我应该在某个地方对我的代码进行任何更改我目前还不知道我已经尝试过所有内容。

这是我在php中的新查询:

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