我正在从MySql表中的表单中插入值。问题是当我将一个输入字段留空(它是主键(时,db 不会抱怨主键为空,并且该行被添加到主键列中带有空白空间的表中。
$this->vendor_name = empty($params['name'])? $params['name']:null;
所以在我的情况下,名称是空的,我在主键中插入了一个 NULL,但数据库没有警告。
你应该使主键auto_increment而不是空
试试吧
创建表自动售货机( id MEDIUMINT 不为空AUTO_INCREMENT, 名称 CHAR(30( 不为空, 主键 (ID();
https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html
是的,插入 NULL 值是正确的方法,但在代码中存在一个简单的条件错误,这是解决方案:
!empty($params['name'])?$params['name']:null;
可能您有多个主键。在这种情况下,只有您的第一个主键不能为 null,并且必须是唯一的,其他主键则不然。因此,如果您只想为唯一值设置列,则可以添加唯一索引。
ALTER TABLE `your_table`
ADD UNIQUE INDEX (`column_name`);