2014-01-28 99 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')"); 

试试这个,它应该工作