簡體   English   中英

無法使用外鍵將數據插入到mysql表中

[英]Data could not be inserted into mysql table with foreign key

我正在嘗試使用外鍵將數據插入到子表中。 不會插入數據,也不會顯示錯誤。 一旦我刪除了子表中帶有外鍵的列,就會執行查詢並插入數據。

我試圖調試這個,使用 error_reporting E_ALL,我得到的只是 2257,我不明白這意味着什么。

這是插入查詢的代碼

if(isset($_POST['submenu'])){
    $page = mysqli_real_escape_string($con, strtolower($_POST['page']));
    $parents_name = mysqli_real_escape_string($con, strtolower($_POST['menu_id']));

   $UniqueMenuID = ''; 
    if( isset( $_POST['menus_id'])) {
        $UniqueMenuID = $_POST['menus_id']; 
    }      

   $sub_query = '';

   if(empty($page) AND ($parents_name)){
       $sub_error = "<span class='animated flash'>Select a Page to Add to Menu!</span>";
   } 
   else if(empty($page)){
       $sub_error = "<span class='animated flash'>Select a Page to Add to Menu!</span>";
   }
    else if(empty($parents_name)){
       $sub_error = "<span class='animated flash'>Select a Parent to Add Sub Menu!</span>";
   }
    else{
         $check_query = "SELECT * FROM menu_items WHERE title = '$page'";
         $check_run = mysqli_query($con, $check_query);
         if(mysqli_num_rows($check_run) > 0){
             $sub_error = "<span class='animated flash'>Sub Menu Already Exist!</span>";
         }
         else{
             $sub_query = "INSERT INTO `sub_menu`(`sub_id`, `sub_title`, `parent`, `menus_id`) VALUES ('NULL', '$page', '$parents_name', '$UniqueMenuID')";

             if(mysqli_query($con, $sub_query)){
                 $sub_msg = "Sub Menu Has Been Added";
             }
             else{
                $sub_error = "Sub Menu Has Not Been Added";
             }
        }
    }

}

AND THE DATABASE FOR THE PARENT 

CREATE TABLE `menu_items` (
  `id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `page` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `menu_items`
--

INSERT INTO `menu_items` (`id`, `title`, `page`) VALUES
(52, 'promotions', 'promotions'),
(58, 'products', 'products');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `menu_items`
--
ALTER TABLE `menu_items`
  ADD PRIMARY KEY (`id`),
  ADD KEY `id` (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `menu_items`
--
ALTER TABLE `menu_items`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=59;
COMMIT;

和兒童表的數據庫

CREATE TABLE `sub_menu` (
  `sub_id` int(11) NOT NULL,
  `sub_title` varchar(255) NOT NULL,
  `parent` varchar(255) NOT NULL,
  `menus_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `sub_menu`
--
ALTER TABLE `sub_menu`
  ADD PRIMARY KEY (`sub_id`),
  ADD KEY `menus_id` (`menus_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `sub_menu`
--
ALTER TABLE `sub_menu`
  MODIFY `sub_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=31;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `sub_menu`
--
ALTER TABLE `sub_menu`
  ADD CONSTRAINT `Foreign key to menu id` FOREIGN KEY (`menus_id`) REFERENCES `menu_items` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;

需要將數據插入到外鍵不變的表中。

您檢查空的 $page 但沒有 $parents_name:

if(empty($page) AND ($parents_name)) {

那么當第四個 else 條件開始時呢?

if(empty($page) AND ($parents_name)) { 

} else if(empty($page)) { 

} else if(empty($parents_name)) {

} else {
    // When this condition starts?
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM