Я не могу вставить в базу данных - PullRequest
1 голос
/ 27 апреля 2019

Я не могу вставить данные в базу данных MySQL

  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;

Когда я пытаюсь зарегистрироваться, я получаю эту ошибку, и в таблицу msql не добавляются данные.

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

Вот мой файл подключения к базе данных MySQL

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/");

Буду очень признателен, если кто-нибудь решит эту проблему.

Обновление: Я изменяю предыдущую таблицу на эту.

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;

и измените последнюю строку базы данных mysql

из этого

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

к этому

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

Я все еще получаю ту же ошибку.

вот форма регистрации

<?php  common::user_access_only("admin");
    if(isset($_POST['submit']))
    {
        form_validation::add_validation('username', 'required', 'Registration Name');
         form_validation::add_validation('username', 'no_space', 'Registration Name');
         form_validation::add_validation('mobile', 'required', 'mobile');
        form_validation::add_validation('email', 'required', 'Registration email');
        form_validation::add_validation('email', 'email', 'Registration email not valid');
        form_validation::add_validation('password', 'required', 'Registration Passowrd');
        form_validation::add_validation('password', 'no_space', 'Registration Passowrd');
        if(form_validation::validate_fields())
        {
            $username=common::get_control_value("username");
            $mobile = common::get_control_value("mobile");
            $password=common::get_control_value("password");
            $email=common::get_control_value("email");
            $active = common::get_control_value("status"); 

            $q = new Query();
            $q->insert_into("register",array("username"=>$username,"mobile"=>$mobile,"password"=>md5($password),"temp_password"=>$password,"email"=>$email,"status"=>$active))
            ->show()
            ->run();
            common::set_message(3);
            common::redirect_to(common::get_component_link(array("appuser","list")));

        }
    }
?>

Ответы [ 4 ]

5 голосов
/ 27 апреля 2019

Сообщение об ошибке не оказывает вам здесь никакой помощи, это то, что MySQL возвращает полностью?

В вашей таблице много полей, которые определены как NOT NULL и не имеютограничения по умолчанию.Но ваш запрос INSERT не указывает значения для всех них.Вам необходимо выполнить одно (или несколько) из следующих действий:

  • INSERT значений для всех полей в вашей таблице
  • Создать ограничения по умолчанию для ваших NOT NULL полей
  • Переопределите таблицу, чтобы эти поля были NULL
4 голосов
/ 27 апреля 2019

В вашей таблице содержится миллион столбцов, которые объявлены NOT NULL без значений по умолчанию, таких как zip_code и city.

Вам необходимо выполнить одно из трех действий:

  • Вставьте значения для всех таких столбцов при вставке строк.
  • Укажите значения по умолчанию в определении таблицы.
  • Удалите ограничение NOT NULL.

Я не уверен, что подходит для ваших целей.

1 голос
/ 27 апреля 2019

Запись не вставлена, поскольку вы поместили NOT NULL для каждого столбца, что означает, что для вставки записи должны быть указаны значения для всех столбцов.

Если вы хотите вставить запись с установленными только этими значениями, вы должны удалить определение NOT NULL для других столбцов.

1 голос
/ 27 апреля 2019

Статус INT, а не VARCHAR

INSERT INTO register (
    username,
    mobile,
    password,
    temp_password,
    email,
    status
)
VALUES (
    "user",
    "1234678",
    "202cb962ac59075b964b07152d234b70",
    "123",
    "admin@admin.com",
    0 // not varchar
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...