MySQL NOT NULL不使用PHP

MySQL NOT NULL不使用PHP,php,mysql,null,create-table,Php,Mysql,Null,Create Table,我的网页接受来自PHP表单的空白数据并将它们提交到我的表中,这是一个问题,即使我将每个表中的所有列都设置为NOTNULL。我是否误解了NOTNULL的含义,或者我是否犯了其他错误(可能是注射预防) 以下是我创建表格的方式: CREATE TABLE USER( user_ID int(5) NOT NULL AUTO_INCREMENT, username char(25) NOT NULL, PRIMARY KEY (user_ID)); 以下是输入页面,以防出现问题: <?php e

我的网页接受来自PHP表单的空白数据并将它们提交到我的表中,这是一个问题,即使我将每个表中的所有列都设置为NOTNULL。我是否误解了NOTNULL的含义,或者我是否犯了其他错误(可能是注射预防)

以下是我创建表格的方式:

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'/>";
?>

空字符串“”与空字符串“”之间存在差异。数据库中设置为NOTNULL的字符字段仍将接受空字符串。在这种情况下,表单将向验证页面发布一个空字符串,然后将其插入数据库


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

空字符串“”与空字符串“”之间存在差异。数据库中设置为NOTNULL的字符字段仍将接受空字符串。在这种情况下,表单将向验证页面发布一个空字符串,然后将其插入数据库


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

空字符串“”与空字符串“”之间存在差异。数据库中设置为NOTNULL的字符字段仍将接受空字符串。在这种情况下,表单将向验证页面发布一个空字符串,然后将其插入数据库


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

空字符串“”与空字符串“”之间存在差异。数据库中设置为NOTNULL的字符字段仍将接受空字符串。在这种情况下,表单将向验证页面发布一个空字符串,然后将其插入数据库


在进行数据库插入之前,您的验证页面需要检查字符串是否为空。

顺便说一句,您不需要将主键设置为非空-这是隐式完成的。
user\u id
列的结果是什么?零长度字符串与空值不同。INSERT中user_id的零长度字符串将作为整数值进行计算,MySQL将其视为0,这将触发该列上的自动_增量行为。长度为零的字符串对username列有效,因此插入成功。您可能需要考虑在UpRyNoMy列上添加唯一的密钥约束,这样就不会有两行具有相同的用户名。(很高兴看到使用了真正的转义字符串函数;当PDO和mysqli可用时,使用mysql接口就不太好了。)顺便说一句,您不需要使主键不为null-它是隐式完成的。因此,
user\u id
列的值是多少?零长度字符串与null不同。INSERT中user_id的零长度字符串将作为整数值进行计算,MySQL将其视为0,这将触发该列上的自动_增量行为。长度为零的字符串对username列有效,因此插入成功。您可能需要考虑在UpRyNoMy列上添加唯一的密钥约束,这样就不会有两行具有相同的用户名。(很高兴看到使用了真正的转义字符串函数;当PDO和mysqli可用时,使用mysql接口就不太好了。)顺便说一句,您不需要使主键不为null-它是隐式完成的。因此,
user\u id
列的值是多少?零长度字符串与null不同。INSERT中user_id的零长度字符串将作为整数值进行计算,MySQL将其视为0,这将触发该列上的自动_增量行为。长度为零的字符串对username列有效,因此插入成功。您可能需要考虑在UpRyNoMy列上添加唯一的密钥约束,这样就不会有两行具有相同的用户名。(很高兴看到使用了真正的转义字符串函数;当PDO和mysqli可用时,使用mysql接口就不太好了。)顺便说一句,您不需要使主键不为null-它是隐式完成的。因此,
user\u id
列的值是多少?零长度字符串与null不同。INSERT中user_id的零长度字符串将作为整数值进行计算,MySQL将其视为0,这将触发该列上的自动_增量行为。长度为零的字符串对username列有效,因此插入成功。您可能需要考虑在UpRyNoMy列上添加唯一的密钥约束,这样就不会有两行具有相同的用户名。(很高兴看到使用了真正的转义字符串函数;当PDO和mysqli可用时,使用mysql_uu接口就不太好了。)OP可能还想在user_uname列上添加一个唯一的约束;并且考虑使用PDO或MyQuLi,而不是弃用的MySQL接口。OP可能还想在UpReNoNeNeLoad添加一个唯一的约束;并且考虑使用PDO或MyQuLi,而不是弃用的MySQL接口。OP可能还想在UpReNoNeNeLoad添加一个唯一的约束;并且考虑使用PDO或MyQuLi,而不是弃用的MySQL接口。OP可能还想在UpReNoNeNeLoad添加一个唯一的约束;并考虑使用PDO或MySQL而不是废弃的MySQL接口。
<?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();
?>