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