2015-04-05 51 views
0

我的数据库(MySQL)有一个表members1,列usernamepassword如何在MySQL表中插入同一行的两列值

我正在从HTML网页采用用户名和密码,并使用PHP来更新数据库。

下面是PHP代码:

$flag = 0; 
$sql = "SELECT username FROM members1"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) 
    { 
     while($row = $result->fetch_assoc()) 
     { 
      if ($row["username"] == $_POST["username"]) 
      {     
       { 
        $flag = 1; 
        echo "<h3>This username already exists.</h3>"; 
        echo "Please try with a different username.<br/>"; 
        echo "<br/><a href=sign_up.html>Try again</a>"; 
        break; 
       }     
      } 
     } 
     /* If username is unique */ 
     if ($flag == 0) 
     { 
      /* PROBLEM LIES HERE */ 
      $sql = "INSERT INTO `dbname`.`members1` (`username`) VALUES ('" . $_POST["username"] . "')" ; 
      $sql2 = "INSERT INTO `dbname`. `members1` (`password`) VALUES ('" . $_POST["pass1"] . "')"; 
      $conn->query($sql); 
      $conn->query($sql2); 
      echo "<h3>Signup successfull.</h3>You can now login with your username and password.";    
     } 
    } 
$conn->close(); 

但在前端一个给用户名和密码后,当我检查数据库,我看到的用户名中插入一行,并且密码被插入到下一行。

我在自己的前端项目工作,但我想我会添加一个注册登录功能。所以我只是在网上提供了一些简短的教程来做到这一点。我想我犯了一个错误。

任何人都可以建议如何解决这个问题?我知道我必须改变$sql$sq2,但不知道该怎么做。

谢谢。

+0

您应该在第二次插入中添加一个where子句来搜索用户。 – Typo 2015-04-05 21:49:54

回答

2

插入可以一次偏离航向填写多个字段:

$sql = "INSERT INTO `dbname`.`members1` (`username`,`password`) VALUES ('" . $_POST["username"] . "','" . $_POST["pass1"] . "')" ; 
$conn->query($sql); 

我也建议你告知where close

$sql = "SELECT username FROM members1 WHERE username = '".$_POST["username"]."'"; 

甚至尝试更好,并添加unique index您的用户名f ield

也许甚至是冒险和学习安全和prepared statement

+0

谢谢。现在工作。阿里已经告诉了如何去做,尽管阿里不知何故忘了一个引用('),因为它不起作用。在查看答案后可以看到报价缺失。谢谢。 – sps 2015-04-05 21:48:17

1

你必须在一次插入值:

$sql = "INSERT INTO `dbname`.`members1` (`username`,`password`) VALUES ('" . $_POST["username"] . "'," . $_POST["pass1"] . "')" ; 
+0

感谢您的帮助。但是你只是省略了''开头的'。$ _POST [“pass1”]。“'',因为它不起作用。我相信这只是你的错字。现在工作。非常感谢!。 +1指导正确的方式! – sps 2015-04-05 21:45:17

相关问题