提交后,新行会添加到“服务器”表中,但每个数据都显示为“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']')");
?>
答案 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)
“奇怪的是,mysqli_query($con,"INSERT INTO form (name, dob) VALUES ('$_POST[post_name]', '$_POST[post_dob]')");
有效。”
“但当我将NAME
替换为SERVERID
,并将DOB
替换为SERVERIP
时,输入的数据不会插入。”
问题是,您需要相应地更改POST变量和列名称。
将您的NAME
列重命名为SERVERID
和DOB
列至SERVERIP
。
和post_name
到serverid
和post_dob
到serverip
现在可以通过以下方式完成新查询:
$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.