2015-11-27 174 views
-2

我知道了所有的工作,感謝所有的幫助,並指引我朝着正確的方向發展。PHP不會將表單數據插入到MySQL數據庫中

我有一個Web主機,它有MySQL和phpMyAdmin。下面的代碼顯示了我的.php文件中的PHP。當我提交表單時,數據不會存儲在SQL數據庫中。

我的數據庫是一個名爲'登錄'的表。它有三個字段:'userID'是一個自動增量類型,'email'是一個VARCHAR,'password'也是一個VARCHAR。

我測試了我的連接,它確實工作,這意味着代碼中的某些內容是錯誤的,但我無法找到它。如果你們能幫助我,我將不勝感激。

這是我的代碼:

<form action="index.php" method="post"> 
       <p>Email Address:</p> 
       <input type="text" name="email" required autofocus pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$" placeholder="Please enter your email"> 
       <p>Password:</p> 
       <input type="text" name="password" required placeholder="Enter your password"> 
       <p>Confirm Password:</p> 
       <input type="text" name="confirmpassword" required placeholder="Confirm your password"> 
       <br> 
       <input class="button" type="submit" value="Register"> 
      </form> 


      <?php 
       if($_POST['submit']=="Submit") 
       { 
        $email = cleanData($_POST['email']); 
        $password = cleanData($_POST['password']); 
        $message = "wrong answer"; 
        addData($email, $pasword); 
       } 

       function cleanData($data){ 
        $data = trim($data); 
        $data = stripslashes($data); 
        $data = htmlspecialchars($data); 
        $data = strip_tags($data); 
        return $data; 
       } 

       function addData ($email, $password) 
       { 
        //include("dbinfo.php"); 
        $dbhost = 'mysql11.000webhost.com'; 
         $dbuser = '************'; //censored for security 
         $dbpass = '******'; //censored for security 
         $conn = mysql_connect("$dbhost", "$dbuser", "$dbpass"); 

         if(! $conn) 
         { 
          die('Could not connect: ' . mysql_error()); 
         } 
        $sql="INSERT INTO Logins ('userID','email','password') VALUES (null, '$email', '$password')"; 
        $result=mysql_query($sql) or die(mysql_error()); 
       } 
      ?> 
+0

登錄表是否允許userID字段中有空值? – Russ

+0

userID是主鍵,我已將它設置爲自動增量,因此每次添加新記錄時,都會將其增加1.因此,不需要指定用戶ID – donfromeway

+0

然後不要指定它。您的代碼嘗試插入空值,而不是讓它默認爲下一個自動增量值。 – Russ

回答

0

SQL插入字段名稱不應該在報價和你提到userID自動增量所以沒有必要列入它除非你想把它設置爲一個特定的值。

$sql="INSERT INTO Logins (email, password) VALUES ('$email', '$password')"; 

你也應該考慮,因爲mysql更改爲mysqli折舊。

編輯:您的mysql_connect在您提供的代碼中缺少數據庫選擇變量。

如果你使用每個mysqli函數的返回值,你會發現調試mysql的查詢要容易得多。下面的代碼檢查並返回與數據庫連接,查詢準備,參數綁定和執行相關的任何錯誤。

此過程使發現問題變得更加容易,並且可以使用修改來記錄錯誤,甚至在生產中向用戶報告錯誤。

function addData ($email, $password) 
{ 
    //include("dbinfo.php"); 
    $dbhost = 'mysql11.000webhost.com'; 
    $dbuser = '************'; //censored for security 
    $dbpass = '******'; //censored for security 
    $dbname = ''; // this is currently missing 
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); 
    /* check connection */ 
    if ($mysqli->connect_errno) { 
     die("Connect failed: ".$mysqli->connect_error); 
    } 
    // define the query 
    $sql="INSERT INTO Logins (email, password) VALUES (?, ?)"; 
    // prepare the query 
    if (!$stmt = $mysqli->prepare($sql)) { 
     // failed to prepare query; 
     die("Prepare failed: ".$stmt->error); 
    } 
    // bind the parameters 
    if (!$res = $stmt->bind_param('ss', $email, $password)) { 
     // failed to bind 
     die("Bind failed: ".$stmt->error); 
    } 
    // execute 
    if (!$res = $stmt->execute()) { 
     // failed to execute 
     die("Execute failed: ".$stmt->error); 
    } 
    echo "Rows inserted: ".$stmt->affected_rows; 
} 
+0

我試圖刪除引號,但我得到了'解析錯誤:語法錯誤,意外的T_STRING'錯誤 – donfromeway

+0

檢查您的代碼。我發佈的$ sql行中沒有T_STRING錯誤。 – Tristan

+0

好吧,我改變了它,現在theres沒有錯誤,但數據仍然沒有被存儲在SQL數據庫 – donfromeway

0

變化if($_POST['submit']=="Submit")

if(!empty($_POST['email']) && !empty($_POST['password']))

+0

不,沒有工作,謝謝你的嘗試。 – donfromeway

+0

你必須從INSERT INTO查詢中刪除引號,就像@Tristan所說的,還要確保userID屬性允許爲空或者是AUTO_INCREMENT – user1365914

+0

我試着刪除引號但我得到了'解析錯誤:語法錯誤,意外的T_STRING'錯誤 – donfromeway

0

則必須更換行:if($ _ POST [ '提交'] == 「提交」) 通過if(!empty($_POST['submit'])) 或者通過if($_POST['submit']=="Register")

嘗試與錯誤的密碼錯誤登錄連接要知道是否 它顯示消息

+0

好吧,我試着在我的測試php文件中更改它,並且它回顯'登錄成功'即使我輸入了錯誤的細節,現在我想我的連接可能會出錯嗎? – donfromeway

相關問題