MySQL NOT NULL 不与 PHP 一起使用


MySQL NOT NULL not working with PHP

我的网页接受来自 PHP 表单的空白数据并将它们提交到我的表中时遇到问题,即使我将每个表中的所有列都设置为 NOT NULL。我是否误解了NOT NULL的含义,或者我做错了其他事情(也许是注射预防)?

以下是我创建表的方法:

CREATE TABLE USER(
user_ID int(5) NOT NULL AUTO_INCREMENT,
username char(25) NOT NULL,
PRIMARY KEY (user_ID));

这是输入页面,以防万一:

<?php
echo "<form action='adduser.php' method='post'>
<input type='text' name='username'/>
<input type='submit'/>";
?>

验证页:(添加用户.php)

<?php
$name=$_POST['username'];
$name=stripslashes($name);
$name=mysql_real_escape_string($name);
if(mysql_query("INSERT INTO User VALUES ('','$name');")
echo "Entry successful";
else
echo "Invalid entry: ".mysql_error();
?>

无论我在文本框中输入什么,输入都是成功的。我是SQL新手,所以我犯的这个基本错误是什么?

NULL 和空字符串 '' 之间存在差异。数据库中设置为 NOT NULL 的字符字段仍将接受空字符串。在这种情况下,表单将空字符串发布到验证页面,然后将其插入到数据库中。

在继续数据库插入之前,验证页需要检查字符串是否不为空。