2015-11-28 160 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

密碼

我也注意到,你可能會採用明文存儲密碼。這不被推薦。下面的

用途之一:

其他鏈接: