2015-12-25 31 views
1

我試着用一個文本輸入,index.php文件中的文本輸入的繼承人的部分文本添加到數據庫:插入文本字段與PHP和HTML數據庫

<form action="steamauth/senddb.php" method="get"> 
<input type="text" name="username" placeholder="John Doe"> 
<input type="text" name="steamid" placeholder="12939124953"> 
<input type="text" name="server" placeholder="VanityRP | DarkRP"><br><br> 
<input type="submit" class='btn btn-success' style='margin: 2px 3px;'> 
</form> 

現在繼承人的steamauth/senddb.php代碼:

$value1 = $_POST['username']; 
$value2 = $_POST['steamid']; 
$value3 = $_POST['server']; 
$sql = "INSERT INTO StaffTeam (username, steamid, server) VALUES('".$value1."', '".$value2."', '".$value3."')"; 
if ($conn->query($sql) === TRUE) { 
echo "Admin added succesfully, redirecting in 3 seconds..."; 
header("refresh:3;url=http://vanityrp.site.nfoservers.com/index.php"); 
} else { 
echo "Error: " . $sql . "<br>" . $conn->error; 
} 

所以,現在的問題是,即時通訊在數據庫中得到空記錄,我怎麼能解決這個問題

回答

2

有兩件事情錯在這裏。

首先,您在表單中使用GET方法,但使用POST數組。

  • 兩者都需要匹配。 POST/POST而不是GET/POST。

然後你在標題之前輸出echo之前輸出。

你現在的代碼是開放的SQL injection。使用mysqli_* with prepared statementsPDOprepared statements

如果您試圖傳遞MySQL會抱怨的數據,例如John's Bar & Grill(撇號),那麼您將需要轉義您的數據;無論如何你應該做的事情。

即:

$var = mysqli_real_escape_string($conn, $_POST['var']); 

你的列類型和長度也應該是正確的,並且能夠容納的數據。


error reporting添加到您的文件的頂部,這將有助於發現錯誤。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

旁註:顯示錯誤應該只在分期完成,並且從不生產。

另外,請確保您已成功連接到您的數據庫mysqli_

  • 不同的MySQL API不混合。 (邊注)。