【问题标题】:Php insert no value in primary key MySqlphp在主键MySql中没有插入值
【发布时间】:2017-03-21 20:51:03
【问题描述】:

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

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

所以在我的情况下,名称为空,我在主键中插入了一个 NULL,但数据库没有警告。

【问题讨论】:

  • 您的情况不正确。应该是!empty($params['name'])? $params['name']:null;
  • 您是否检查过究竟是什么值插入到数据库中?
  • @DarshanMehta 谢谢你是对的。愚蠢的错误!

标签: php mysql


【解决方案1】:

你应该将主键设为 auto_increment 而不是 null

试试看

创建表供应商( id MEDIUMINT NOT NULL AUTO_INCREMENT, 名称 CHAR(30) 非空, 主键(id) );

https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 2019-01-09
        • 1970-01-01
        • 2016-07-08
        • 2010-09-24
        • 1970-01-01
        相关资源
        最近更新 更多