HTML表单将数据发送到SQL表

时间:2014-01-28 17:37:24

标签: php html mysql sql sql-server

提交后,新行会添加到“服务器”表中,但每个数据都显示为“0”而不是我输入的数据.. 我正在使用VARCHAR64作为行。

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']')");

?>

5 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

您可能希望使用$_POST['key']代替$_POST[key]

答案 2 :(得分:0)

$ _ POST是一个关联数组,您需要使用单引号或双引号访问键。

示例:

将您的查询更改为

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

mysqli_query($con, $query);

此外,您目前可以接受SQL注入。我建议使用预准备语句或至少在将它插入数据库之前转义$ _POST变量。

希望这有帮助!

答案 3 :(得分:0)

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

试试这个,它应该可行

答案 4 :(得分:0)

From OP's comment:

“奇怪的是,mysqli_query($con,"INSERT INTO form (name, dob) VALUES ('$_POST[post_name]', '$_POST[post_dob]')");有效。”

“但当我将NAME替换为SERVERID,并将DOB替换为SERVERIP时,输入的数据不会插入。”


问题是,您需要相应地更改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.