MYSQL PHP致命错误:未捕获的mysqli_sql_exception:键“ PRIMARY”中的条目“ 0”重复

时间:2019-02-28 13:15:03

标签: php mysql

朋友们,美好的一天!我在一个简单的网站上遇到有关MYSQL查询的错误(自学)...

  

致命错误:未捕获的mysqli_sql_exception:在C:\ xampp \ htdocs \ recipe \ new.php:116中,键'PRIMARY'的条目'0'重复。堆栈跟踪:#0 C:\ xampp \ htdocs \ recipe \ new。 php(116):mysqli_query(Object(mysqli),'insert into new ...')#1 {main}在第116行的C:\ xampp \ htdocs \ recipe \ new.php中抛出

这是第116行代码的图片,您可以看一下

显示错误的网页

图像

以前,我在Mac电脑上,它表示错误来自sql文件,

SQL查询:

 Database: `recipes`
--

-- --------------------------------------------------------

--
-- Table structure for table `new_recipe`
--

CREATE TABLE `new_recipe` (
  `id` int(10) NOT NULL,
  `post_title` varchar(250) NOT NULL,
  `post_image` varchar(250) NOT NULL,
  `post_author` varchar(250) NOT NULL,
  `post_date` date NOT NULL,
  `post_desc` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `new_recipe`
--

INSERT INTO `new_recipe` (`id`, `post_title`, `post_image`, `post_author`, `post_date`, `post_desc`) VALUES

-- --------------------------------------------------------

--
-- Table structure for table `tbl_contact`
--

CREATE TABLE `tbl_contact` (
  `tbl_contact_id` int(11) NOT NULL,
  `fullname` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `user_message` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `tbl_contact`
--

INSERT INTO `tbl_contact` (`tbl_contact_id`, `fullname`, `email`, `user_message`) VALUES

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `user_id` int(10) NOT NULL,
  `f_name` text NOT NULL,
  `l_name` text NOT NULL,
  `email` varchar(250) NOT NULL,
  `c_email` varchar(250) NOT NULL,
  `pass` varchar(250) NOT NULL,
  `c_pass` varchar(250) NOT NULL,
  `u_name` text NOT NULL,
  `address` text NOT NULL,
  `date_of_birth` varchar(50) NOT NULL,
  `city` text NOT NULL,
  `state` text NOT NULL,
  `country` text NOT NULL,
  `gender` text NOT NULL,
  `p_o` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`user_id`, `f_name`, `l_name`, `email`, `c_email`, `pass`, `c_pass`, `u_name`, `address`, `date_of_birth`, `city`, `state`, `country`, `gender`, `p_o`) VALUES

--
-- Indexes for dumped tables
--

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

--
-- Indexes for table `tbl_contact`
--
ALTER TABLE `tbl_contact`
  ADD PRIMARY KEY (`tbl_contact_id`);

--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`user_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tbl_contact`
--
ALTER TABLE `tbl_contact`
  MODIFY `tbl_contact_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=32;

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `user_id` int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

3 个答案:

答案 0 :(得分:2)

您的new_recipe表默认情况下不递增ID,因此它一直尝试插入0。

CREATE TABLE `new_recipe` (
  `id` INT NOT NULL AUTO_INCREMENT`

答案 1 :(得分:0)

看起来您的new_recipe表没有声明AUTO_INCREMENT

答案 2 :(得分:0)

使主键集自动递增。

   CREATE TABLE `new_recipe` (
      `id` INT NOT NULL AUTO_INCREMENT`, primary key(id)

此外,扫描检查表new_recipe中的上一个条目,应该没有id = 0的上一个条目,并且所有id都应具有唯一编号。

如果一切正常,请检查SQL模式 打开phpmyadmin转到变量选项卡,然后搜索sql模式进行编辑并将其空白... 它不会永久设置,所以不用担心。要永久设置sql模式,您需要编辑mysql的cnf文件。