Php在主键MySql中不插入值

Php在主键MySql中不插入值,php,mysql,Php,Mysql,我正在MySql表中插入表单中的值。问题是,当我将一个输入字段留空(它是主键)时,db不会抱怨主键为空,并且该行被添加到表中,主键列中有一个空格 $this->vendor_name = empty($params['name'])? $params['name']:null; 因此,在我的例子中,name是空的,我在主键中插入一个NULL,但是db没有警告。您应该使主键自动递增,而不是NULL 试试看 创建表供应商 id MEDIUMINT NOT NULL自动增量, 名称CHAR3

我正在MySql表中插入表单中的值。问题是,当我将一个输入字段留空(它是主键)时,db不会抱怨主键为空,并且该行被添加到表中,主键列中有一个空格

 $this->vendor_name = empty($params['name'])? $params['name']:null;

因此,在我的例子中,name是空的,我在主键中插入一个NULL,但是db没有警告。

您应该使主键自动递增,而不是NULL

试试看

创建表供应商 id MEDIUMINT NOT NULL自动增量, 名称CHAR30不为空, 主键id ;


是的,插入空值是正确的方法,但代码中存在一个简单的条件错误,这是解决方案:

!empty($params['name'])?$params['name']:null;

可能您有多个主键。在这种情况下,只有第一个主键不能为null,并且必须是唯一的,而其他主键则不能。因此,如果只想为唯一值设置列,可以添加唯一索引

ALTER TABLE `your_table`
ADD UNIQUE INDEX (`column_name`);

你的情况不正确。应该是!空$params['name']$params['name']:null;您是否检查了数据库中到底插入了什么值?@DarshanMehta谢谢您的回答。愚蠢的错误!