2011-08-21 46 views
-2

我有一個示例php的輸入表單。爲什麼不在數據庫上保存?

<form action="insert.php" method="post"> 
     <table> 
      <tr> 
       <td>First Name:</td> 
       <td><input type="text" id="fname" name="fname" /></td> 
      </tr> 
      <tr> 
       <td>Last Name:</td> 
       <td><input type="text" id="lname" name="lname" /></td> 
      </tr> 
      <tr> 
       <td>Age:</td> 
       <td><input type="text" id="age" name="age" /></td> 
      </tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td><input type="submit" value="Add Person!" /></td> 
      </tr> 
     </table> 
    </form> 

和insert.php是這樣

<?php 
    $host = "localhost"; 
    $user = "root"; 
    $pass = ""; 
    $con = mysql_connect($host, $user, $pass); 
    $db = "phptest";  

    if(!$con) 
    { 
     die("Could not connect: " . mysql_error()); 
    } 
    mysql_select_db($db,$con); 
    $sql = "INSERT INTO persons (FirstName,LastName,Age) VALUES ('$_POST[fname]','$_POST[lname]','$_POST[age]')"; 
    mysql_query($sql,$con); 
    mysql_close($con); 
?> 

它工作正常的第一個輸入。當我輸入另一個值並按提交按鈕時,數據不會保存到數據庫中。在數據庫中,它只顯示1行填充我的第一個輸入。 insert.php的代碼有什麼問題?謝謝。

+7

切勿將$ _POST數據直接送入mysql查詢。首先使用mysql_real_escape_string退出輸入。 – matzahboy

+1

如果您得到Little Bobby Tables,您需要對輸入信息進行santize。 –

+1

我明白了,那是w3school的樣本。我只是複製它 – Ryan

回答

2

請也做

echo mysql_error(); 

的mysql_query()知道什麼是錯的,雖然您的查詢似乎很細之後。

此外,發佈您的表結構可能會有所幫助。 *這可能是因爲你忘記在你的表中設置了一個id,它被設置爲primary_key和auto_increment *

0

我最好的猜測是你傳遞的數據到單引號的查詢中,這是過早的導致查詢中的一個引用字符串結束。

不知道確切的錯誤是什麼,我不能確定。你應該檢查錯誤,如mysql_error()。如果您使用它並顯示錯誤信息,我將能夠爲您提供更多幫助。

直接從用戶輸入(這是什麼$_POST包含)拋出數據是一個非常糟糕的想法。您最好使用PDO並準備好語句。

而不是再寫一遍全部的咆哮,我只是直接給你一個我前幾天寫的答案。你可以找到它here。在你的表persons並將其設置爲auto_increment

0

創建一個新的Id前)。

相關問題