2016-05-28 5 views
0

Не уверен, что моя ошибка. В моем html у меня есть форма, и когда я нажимаю кнопку «Отправить», она дает мне ошибку. Мое соединение работает, но по какой-то причине он не будет на самом деле добавить в базу данныхБаза данных mySQL не обновляется с формы

<?php 

    if(isset($_POST['submit'])){ 
     $username = $_POST['username']; 
     $password = $_POST['password']; 
     $connection = mysqli_connect('localhost', 'root', '', 'loginapp'); 

     if($connection){ 
      echo "we are connected"; 
     } 
     else{ 
      die("connection failed"); 
     } 

     $query = "INSERT INTO users(username,password) "; 
     $query.= "VALUES('$username','$password')"; 
     $result = mysqli_query($connection, $query); 

     if(!$result){ // if not true, put query failed 
      die('Query Failed' .mysqli_error($connection)); 
     } 
    } 

    ?> 

Я интересно, если есть что-то не так с этим здесь, как этот код работает разве, как планировалось

$query = "INSERT INTO users(username,password) "; 
    $query.= "VALUES('$username','$password')"; 
    $result = mysqli_query($connection, $query); 

    if(!$result){ // if not true, put query failed 
     die('Query Failed' . mysqli_error($connection)); 
    } 
    } 
+0

Какая ошибка вы получаете? – Mureinik

+0

Сначала мы говорим: «Мы подключены», так что хорошо, если я первый, если это достигнуто, ошибка происходит из: «мы подключеныQuery FailedDuplicate entry« 0 »для ключа« PRIMARY »' –

+0

Это означает, что у вас есть уникальный столбец, который вы нарушая вашу вставку. Скорее всего, ваш столбец 'username'. Вы не можете иметь повторяющиеся значения в этом столбце или в столбце 'unique'. – gmiley

ответ

0

В качестве альтернативы; почему не гнездятся свой запрос в условном операторе и взять его оттуда: как так:

<?php 
     if($username && $password){ 
      $query = "INSERT INTO users(username, password) "; 
      $query .= "VALUES('" . $username . "', '" . $password . "')"; 
      $result = mysqli_query($connection,$query); 

      if(!$result) { 
       die('Query Failed' .mysqli_error($connection)); 
      }    
     } 
+0

это скобка для 'if (isset ($ _ POST ['submit']))' loop. – Sandeep

+0

@ Sandeep OK ... Я просто подумал, что это опечатка или что-то в этом роде ... – Poiz

+0

Я не думаю, что это была ошибка. Напомним, у меня был if (isset наверху, так что для этого был скобка. –

2

Вы пытаетесь вставить дубликат записи в таблице. вероятно, столбец username. Вы можете обойти это, но либо предоставить значение для username, которого еще нет в вашей таблице, либо удалить запись из своей таблицы, чтобы вы могли ее повторно вставить. Я могу получить более конкретный, если вы включите определение для своей таблицы users в свой вопрос, но это основная проблема, с которой вы сталкиваетесь.

Если ваша таблица определена с числовым напечатал id столбец в качестве первичного ключа, а не указать новое значение в вашей вставки, например:

insert into users (id, username, password) values (1, 'joeuser', 'password'); 

Вместо этого, делать то, что у вас есть в вашем вопрос:

insert into users (username, password) values ('joeuser', 'password'); 

запись вставленной либо иметь null или 0 в качестве значения вставки по умолчанию. Каждый раз, когда вставка выполняется, одно и то же значение будет вставлено в столбец id, что приведет к ошибке повторяющегося значения по мере поступления.

Чтобы обойти это, определяя id столбец как auto-increment рассказывает, что в любое время вы выполняете вставку, и не указывать значение для id он будет использовать следующее доступное целое число в качестве значения по умолчанию.

Другой подход заключается в том, чтобы указать новое значение для id по каждому выполнить заявления вставки, например, так:

insert into users (id, username, password) values (1, 'joeuser', 'password'); 

insert into users (id, username, password) values (2, 'daveuser', 'password'); 

insert into users (id, username, password) values (3, 'janeuser', 'password'); 

Для таблицы, как это, используя автоприращение лучший путь к идти.

+0

jeez. Я буквально удалил всю свою базу данных, которую я сделал, и просто сделал это снова. Только на этот раз я добавляю auto increment для id. Как, черт возьми, это исправить проблему? –

+0

Если у вас был целочисленный столбец, если вы не указали значение в своей вставке, то любое значение или значение по умолчанию (вероятно, 0) будут вставлены каждый раз. Если вы укажете, что столбец будет автоматически увеличиваться, то он добавит следующее добавленное значение в столбец, если не указано значение. – gmiley

+0

Обновлен мой ответ, чтобы дать немного больше объяснений. – gmiley

Смежные вопросы