2014-01-28 150 views
-1

提交時,一個新行被添加到'服務器'表,但每個數據都表示'0',而不是我輸入的數據。我使用VARCHAR64作爲行..HTML表格發送數據到SQL表

Form.html

<html> 
<head> 
</head> 
<body> 
<form action="db.php" method="post"> 
server id: <input type="text" name="post_serverid"> 
server ip: <input type="text" name="post_serverip"> 
<input type="submit> 
</body> 
</html> 

db.php中

<?php 

$con=mysqli_connect("localhost","root","","toplist"); 

//Checking the connection 
if(mysqli_connect_errno($con)) 
{ 
    echo "Cold not connect to SQL Database: " + mysqli_connect_error(); 
} 

mysqli_query($con, "INSERT INTO servers (serverid, serverip) VALUES ('$_POST['post_serverid']', '$_POST['post_serverip']')"); 

?> 
+0

奇怪的是, ** mysqli_query($ con,「INSERT INTO form(name,dob) VALUES(' $ _POST [post_name]','$ _POST [post_dob]')「);作品**。但是,當我用SERVERID替換NAME,並用SERVERIP替換DOB時,輸入的數據不會插入.. –

+0

@GangDonIt,將來請不要發佈代碼的屏幕截圖。請將代碼複製並粘貼到問題的正文中。 –

+0

*「但是,當我用SERVERID替換NAME,並用SERVERIP替換DOB時,輸入的數據不會插入..」* ---這是因爲您需要相應地更改列名稱。 @GangDonIt - 將您的SERVERID列重命名爲NAME,將SERVERIP重命名爲DOB或反之亦然。 –

回答

0

From OP's comment:

「奇怪的是,mysqli_query($con,"INSERT INTO form (name, dob) VALUES ('$_POST[post_name]', '$_POST[post_dob]')");的作品。」

「但是,當我與SERVERID取代NAME,並與SERVERIP取代DOB,輸入數據不插入。」


的問題是,你需要相應地改變你的POST變量和列名。

將您的NAME列重命名爲SERVERIDDOB列爲SERVERIP

post_nameserveridpost_dobserverip


新的查詢,現在可以做到這樣:

$serverid = mysqli_real_escape_string($con,$_POST['serverid']); 
$serverip = mysqli_real_escape_string($con,$_POST['serverip']); 

$sql = "INSERT INTO `servers` (`serverid`, `serverip`) VALUES ('$serverid', '$serverip');"; 

mysqli_query($con, $sql); 

使用這種方法將有助於防止對SQL injection.

0

您可能需要使用$_POST['key']而不是$_POST[key]

+0

這是評論,而不是回答 –

+0

感謝您的嘗試,但是這帶來了更多的錯誤。 –

0

$ _POST是一個關聯數組,您需要使用單引號或雙引號訪問鍵。

例子:

改變您的查詢

$query = "INSERT INTO servers (serverid, serverip) VALUES ('".$_POST['post_serverid']."','".$_POST['post_serverip']."')"; 

mysqli_query($con, $query); 

此外,您目前volunerable SQL注入。我建議使用一個準備好的語句,或者至少在將$ _POST變量插入到數據庫之前轉義它。

希望這會有所幫助!

+0

實際上,您可以使用單引號或雙引號訪問值 - 只是雙引號允許使用'$'解釋內容,如果沒有正確轉義,可能會出現問題 – Basic

1

第一:不要直接將用戶數據直接放入數據庫,而無需先驗證/清除它。

接下來,您的mysqli_query()中會出現一些奇怪的標點符號。試試這個:

$serverid = $mysqli->real_escape_string($_POST['serverid']); 
$serverip = $mysqli->real_escape_string($_POST['serverip']); 

$sql = "INSERT INTO servers (serverid, serverip) VALUES('$serverid', '$serverip');"; 

mysqli_query($con, $sql); 
+0

我收到錯誤:Undefined:mysqli和Call第10行是「$ serverid = $ mysqli-> real_escape_string($ _ POST ['serverid']);」 –

+0

這是因爲你需要改變'$ mysqli-> real_escape_string'到'$ con> real_escape_string' @GangDonIt –

+0

是的,我的不好。抱歉。 @ Fred-ii-對$ con和$ mysqli是正確的。 – TunaMaxx

0
$serverip=$_POST['post_serverid']; 
$serverid=$_POST['post_serverip']; 
$query = mysqli_query($con,"INSERT INTO servers (serverid, serverip) VALUES ('$serverid','$serverid')"); 

試試這個,它應該工作