我无法插入数据库

时间:2019-04-27 13:14:30

标签: mysql sql database

我无法将数据插入MySQL数据库

{
    "channel": "channenID",
    "text": "Some text",
    "attachments": [{
        "text": "Attachment text",
        "callback_id": "my_callback",
        "actions": [{
            "name": "action",
            "type": "button",
            "text": "Button text",
            "style": "primary",
            "value": "Some value"
        }]
    }]
}

当我尝试注册时,出现此错误,并且在msql表中未添加任何数据。

  DROP TABLE IF EXISTS `register`;
    CREATE TABLE `register` (
      `id` int(11) NOT NULL,
      `username` varchar(100) NOT NULL,
      `unique_code` varchar(300) NOT NULL,
      `email` varchar(300) NOT NULL,
      `name` varchar(300) NOT NULL,
      `mobile` varchar(200) NOT NULL,
      `address` longtext NOT NULL,
      `state` varchar(50) NOT NULL,
      `country` varchar(50) NOT NULL,
      `zipcode` varchar(50) NOT NULL,
      `city` varchar(200) NOT NULL,
      `password` varchar(300) NOT NULL,
      `temp_password` varchar(300) NOT NULL,
      `image` varchar(300) NOT NULL,
      `phone_verified` int(11) NOT NULL,
      `reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `status` int(11) NOT NULL,
      `gcm_code` longtext NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

这是我的MySQL数据库连接文件

INSERT INTO register (
    username,
    mobile,
    password,
    temp_password,
    email,
    status
)
VALUES (
    "user",
    "1234678",
    "202cb962ac59075b964b07152d234b70",
    "123",
    "admin@admin.com",
    ""
)
Error in query.

如果有人解决了这个问题,我将不胜感激。

更新: 我将上一张表更改为此。

define('DIRECT_ACCESS', true);
define('HOST','localhost');
define('DATABASE','id9346797_market');
define('USERNAME','idxxxxxxxxxxxx');
define('PASSWORD','xxxxxxxx');
define('DB_PREFIX','');
define('SITE_URL', (@$_SERVER['HTTPS'] ? "https" : "http") . "://" . $_SERVER['HTTP_HOST']."/fruitmarket/");

并更改mysql数据库的最后一行

从此

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `username` varchar(60) NOT NULL,
  `mobile` varchar(60) NOT NULL,
  `password` varchar(60) NOT NULL,
  `email` varchar(255) NOT NULL,
  `active` tinyint(4) NOT NULL,
  `type` varchar(5) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

对此

define('SITE_URL', (@$_SERVER['HTTPS'] ? "https" : "http") . "://" . $_SERVER['HTTP_HOST']."/fruitmarket/");

我仍然遇到相同的错误。

这是报名表

define('SITE_URL','http://localhost/fruitmarket/');

4 个答案:

答案 0 :(得分:5)

错误消息对您没有帮助,是MySQL返回的全部内容吗?

您的表中有大量字段,这些字段定义为NOT NULL,并且没有默认约束。但是您的INSERT查询未指定所有值。您需要执行以下一项(或多项):

    表中所有字段的
  • INSERT
  • 为您的NOT NULL字段创建默认约束
  • 重新定义表以允许这些字段为NULL

答案 1 :(得分:4)

表中有成千上万的列被声明为NOT NULL,但没有默认值,例如zip_codecity

您需要做以下三件事之一:

  • 在插入行时为 all 这样的列插入值。
  • 在表的定义中提供默认值。
  • 删除NOT NULL约束。

我不确定哪种方法适合您的目的。

答案 2 :(得分:1)

状态为INT而不是VARCHAR

INSERT INTO register (
    username,
    mobile,
    password,
    temp_password,
    email,
    status
)
VALUES (
    "user",
    "1234678",
    "202cb962ac59075b964b07152d234b70",
    "123",
    "admin@admin.com",
    0 // not varchar
)

答案 3 :(得分:1)

未插入记录,因为已为每列放置NOT NULL,这意味着为了插入记录,应提供所有列的值。

如果只想插入设置了这些值的记录,则必须删除其他列的NOT NULL定义。