mysqli_query不再插入数据

时间:2016-03-21 16:47:28

标签: php mysql mysqli

这是一个快速的故事,我是MYSQL(i)编码的初学者,所以请原谅noobish错误,除非这个系统有效,直到我有4-5个朋友一次尝试输入数据,结束时数据库不接受进一步的输入它允许使用我的删除代码,它将从表中删除某些数据。

<?php
require ("../config/mysql.php");
if (isset($_POST['unit']) && is_numeric($_POST['unit']))
{
    $unit = $_POST['unit']; 
    $name = $_POST['name']; 
    $vehicle = $_POST['vehicle']; 
    $status = $_POST['status'];

    $query = "INSERT INTO `users` (`unit`, `name`, `vehicle`,`status`) VALUES ('$unit', '$name', '$vehicle', '$status');";
    mysqli_query($conn, $query);
    header("Location: ../index.php");
}
else
{ 
    echo "<h2>ERROR: YOU GINGER'D IT</h2>";
    echo "<h2>YOU PUT A LETTER IN THE UNIT SLOT, GOOD JOB!</h2>";
}
?>

忽略最后两个回声,因为这是我们朋友之间的一个笑话。

请注意,它完全适用于使用它的 ONE 人。

让您感到疑惑,这是我的删除代码:

<?php
require ("../config/mysql.php");
if (isset($_POST['unit']) && is_numeric($_POST['unit']))
{
    $unit = $_POST['unit'];
    $query = "DELETE from `users` WHERE unit = $unit";
    mysqli_query($conn, $query);
    header("Location: ../index.php");
}
else
{ 
    echo "<h2>ERROR: YOU GINGER'D IT</h2>";
    echo "<h2>YOU PUT A LETTER IN THE UNIT SLOT, GOOD JOB!</h2>"; 
}
?>

此代码工作正常,没有错误。我尝试使用某人的代码来显示任何错误,除非它对我不起作用,所以我要求StackOverFlow提供一些帮助。

我不知道是什么原因造成了这个错误,我已经在互联网的末端搜索到了答案。

谢谢。

修改

这是我的表格,包括当前数据。

-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Mar 21, 2016 at 05:51 PM
-- Server version: 10.1.10-MariaDB
-- PHP Version: 7.0.4

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `cad`
--

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

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

CREATE TABLE `users` (
  `id` int(100) NOT NULL DEFAULT '0',
  `name` text NOT NULL,
  `unit` text NOT NULL,
  `vehicle` text NOT NULL,
  `status` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

INSERT INTO `users` (`id`, `name`, `unit`, `vehicle`, `status`) VALUES
(0, 'Ginger', '2', 'GMC Ambulance', 'ON DUTY'),
(1, 'Mac Mcfly', '1', 'Chevy Tahoe', 'OFF DUTY');

--
-- Indexes for dumped tables
--

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

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

1 个答案:

答案 0 :(得分:1)

你的问题不是代码,而是数据库。您显然通过违反主键来破坏数据库。尝试在主键大于1的表上执行select *。当您在插入数据库之前没有进行验证检查时会发生这种情况。