2015-11-28 117 views
-1

嘿家伙我一直在拉我的头发,试图找出为什么这个php代码不工作。基本上我有数据库和表都设置正确,我试图让用户填写的数据去到MySQL数据库。数据没有被插入MySQL数据库使用PHP

我一直在Google上搜索几个小时,还没有找到解决方案。当我单击页面上的提交时,页面刷新并看起来像数据已提交,但查询数据库时不显示任何内容。

<form action="#" method="post"> 
     <div class="row"> 
      <h4>Select your school</h4> 
      <p>If you can't find it, contact your administrator about signing your school up!</p> 

      <div class="dropdown"> 
       <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown"> 
        Choose your school from the dropdown menu 
        <span class="caret"></span> 
       </button> 
       <select title="Select your School" name="School" id="schools"> 
        <option value="1">University of Central Florida</option> 
        <option value="2">Seminole State College</option> 
        <option value="3">School of Hard Knocks</option> 
       </select> 
      </div> 
     </div> 
     <div class="row"> 
      <h4>Name</h4> 
      <input class="form-group col-lg-4" id="first" name="first" type="text" placeholder="First"> 
      <input class="form-group col-lg-4" id="last" name="last" type="text" placeholder="Last"> 
     </div> 
     <div class="row"> 
      <h4>Email Address</h4> 
      <input class="form-group col-lg-8" id="email" name="email" type="text" placeholder="ex. [email protected]"> 
     </div> 
     <div class="row"> 
      <h4>Password</h4> 
      <input class="form-group col-lg-8" id="password" name="password" type="text" placeholder="ex. Hunter2"> 
     </div> 
     <div class="row"> 
      <input id="submit" name="submit" type="submit" value="submit" class="btn btn-primary"> 
     </div> 
    </form> 
</div> <!-- /container --> 

    <?php 
    error_reporting(E_ALL); 
    if (isset($_POST['submit'])) 
    { 
    $firstName = -1; 
    $lastName = -1; 
    $email = -1; 
    $password = -1; 
    $school = -1; 
    $dropdown_val = -1; 

    $connect=mysqli_connect('localhost','root','yanni123','eventmanager'); 

    if(mysqli_connect_errno($connect)) 
    { 
    echo 'Failed to connect'; 
    } 

    $firstName = $_POST["first"]; 
    $lastName = $_POST["last"]; 
    $email = $_POST["email"]; 
    $password = $_POST["password"]; 
    $dropdown_val = $_POST["School"]; 

    mysqli_query($connect, "INSERT INTO users (idusers, firstName, lastName, password, emailAddress, school) 
    VALUES (1, '$firstName', '$lastName', '$password', '$email', '$dropdown_val')"); 

    mysqli_close($connect); 
    } 
    ?> 
+1

使用'mysqli_error'添加mysqli_query'后'错误处理。并发布错误消息 – amdixon

+0

检查错误。您也可以使用此代码开放SQL注入。 http://php.net/manual/en/mysqli.error.php检查连接和查询。 – chris85

+0

好的,我会添加错误处理,并让你知道,我试图做到这一点,但我无法得到它的工作。此外,此代码将永远不会在线用于学习目的,但是一旦我开始工作,我肯定会添加SQL注入检查。 – YanniGen

回答

2

从我的意见摘自:

“如果你的idusers列为AUTO_INCREMENT,那将是一个问题,如果你有其他列的其他约束。”

OP:

“@弗雷德-II-我添加错误处理代码,它返回‘错误描述:重复的项目‘1’重点‘主要’’原来这我的表是错误的,我使用自动增量为idusers。我如何将idusers的值留在查询中,以便它不与现有条目冲突?我通过AUTO_INCREMENT应该增加,当数据库遇到冲突的ID ?”

使用以下,要么删除这两个条目1,或者使用''的价值,为idusers AI'd列。

mysqli_query($connect, "INSERT INTO users (idusers, firstName, lastName, password, emailAddress, school) 
      VALUES ('', '$firstName', '$lastName', '$password', '$email', '$dropdown_val')") 
      or die(mysqli_error($connect)); 

AI会发生在自己的。不,它不会与冲突发生冲突。不是你现在拥有的方式。

奖金答案:

你现在的代码是开放的SQL injection。使用mysqli_* with prepared statementsPDOprepared statements

密码

我也注意到,你可能会采用明文存储密码。这不被推荐。下面的

用途之一:

其他链接: