这是一个快速的故事,我是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 */;
答案 0 :(得分:1)
你的问题不是代码,而是数据库。您显然通过违反主键来破坏数据库。尝试在主键大于1的表上执行select *。当您在插入数据库之前没有进行验证检查时会发生这种情况。