mySQL数据库没有从表单更新

时间:2016-05-28 18:17:29

标签: php mysql

不确定我的错误是什么。在我的HTML中我有一个表单,当我点击提交它给我一个错误。我的连接正常,但由于某种原因,它实际上不会添加到数据库

 <?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 ) );
  }
  }

2 个答案:

答案 0 :(得分:2)

您正尝试在表格中插入重复的条目。可能是username列。您可以解决此问题,但要么提供尚未在您的表中的username值,要么从表中删除记录以便您可以重新插入它。如果您在问题中包含users表的定义,我可以更具体,但这是您遇到的基本问题。

如果您的表格是使用数字类型id列作为主键定义的,并且您没有在插入中指定新值,请执行以下操作:

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

相反,做你在问题中所拥有的:

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

插入的记录将以null0作为默认插入值。每次执行插入时,相同的值都将插入id列,这将导致重复值错误。

要解决这个问题,将id列定义为auto-increment会告诉它,只要执行插入操作,并且没有为id指定值,它就会使用下一个可用的整数作为默认值。

另一种方法是在insert语句的每次执行时为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');

对于这样的表,使用自动增量是最好的方法。

答案 1 :(得分:0)

可替换地;为什么不将您的Query嵌套在条件语句中并从那里取出:如:

SELECT reg_nbr, hangar_nbr, lot_nbr
FROM lots 
GROUP BY reg_nbr
HAVING MAX(hangar_nbr) = MIN(hangar_nbr) AND
       MAX(lot_nbr) = MIN(lot_nbr)