2016-07-15 16 views
1

我正在構建一個簡單的Web數據庫連接,但是當我爲我的表分配一個外鍵比我無法通過html-php插入數據。 任何人都可以查看我的代碼,並給我任何建議/想法:用php和外鍵插入選項 - 不可能

人表的主鍵是ID 外鍵:KEY boardnameboardname), KEY depnamedepname

板表主關鍵是板名

deparment表主鍵是depname

Person表

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; 

Depament表

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

回答

0

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

您的insert語句缺少'depname'和'boardname'的值。

此外,(可能不相關,但值得檢查)您的'董事會'和'部門'表之前必須有相關條目您插入引用它們的記錄。

+0

謝謝理查德 – Shkolla

0

YEPP通過消除在PHP myadmin我能夠從表格中插入數據的非空選擇,但正確的,當我更新的形式與這兩個領域boardnameDepartmentName的這是我的主表的外鍵現在我不能夠ASIGN的boardname和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]')";