我有这个表单列表:
<form action="">
Inlognaam: <input type="text" name="inlognaam">
</form>
现在我想要的是,如果你把文本放进去,文本就会被设置到数据库中。
// Create connection
$con=mysqli_connect("localhost","root","","phpexpr");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$inlognaam = $_POST['inlognaam'];
if(isset($POST['inlognaam'])){
$filename = $_POST['inlognaam'];
}
if(isset($filename)){
echo $filename;
}
$sql = 'INSERT INTO gebruikers (inlognaam) VALUES('.$filename.')';
mysql_query($sql);
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con);
?>
我得到了这个代码,但我不知道哪里出了问题,应该更改什么。有人能帮我吗?:)
您的代码有几个缺陷:
-
您没有指定方法,所以您的表单将使用GET发送,而您在PHP代码中使用
$_POST
变量。使用<form action="" method="POST">
-
您正在混合
mysql_*
函数和mysqli_*
函数。不要再使用前者了,它们已经被弃用了。使用MySQLi或PDO(我更喜欢后者)。如果你不能决定是哪一个,这篇文章将对你有所帮助。如果你选择PDO,这里有一个很好的教程。 -
您在这里执行两个查询(产生两个INSERT):
mysql_query($sql); if (!mysql_query($sql,$con))
只需获取第一个查询的值(如果要使用MySQLi,请使用
mysqli_query
)。 -
最后但同样重要的是,由于查询的字符串连接,您对SQL注入持开放态度。切换到如下准备好的语句:
$sql = 'INSERT INTO gebruikers (inlognaam) VALUES (?)'; $stmt = $con->prepare($sql); $stmt->bind_param('s', $filename); $success = $_stmt->execute(); if ($success) { …
在<form action="" method="post">
行使用方法名POST还有一件事你犯了错误,那就是在行中使用$_POST
而不是$POST
if(isset($POST['inlognaam'])){
$filename = $_POST['inlognaam'];
}
此处,
当您没有指定表单标记的方法属性时,默认情况下它将使用GET方法来发布数据。
因此,设置或使用$_REQUEST从html文件中获取数据,这与form方法无关。
表单可能类似于<form action="" method="POST">
试试
如果你得到一个错误,你能给我们一个错误吗?我看到您使用的是MySQLI连接,但您只需一个MySQL查询就可以将所有内容放入数据库中。
你需要这个代码:
<form action="" method="POST">
<?php
// Create connection
$con = mysqli_connect("localhost","root","","phpexpr");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQLI: " . mysqli_connect_error();
}
$inlognaam = trim($_POST['inlognaam']);
if(isset($_POST['inlognaam']))
{
$filename = trim($_POST['inlognaam']);
}
if(isset($filename))
{
echo $filename;
}
$sql = 'INSERT INTO gebruikers (inlognaam) VALUES('.$con->real_escape_string($filename).')';
$con->query($sql);
if (!mysqli_query($sql,$con))
{
die('Error: ' . mysqli_error());
}
echo "1 record added";
mysqli_close($con);
?>
我使用了MySQLI的OO端,因为我不习惯生产MySQLI中的通用端,也不习惯我这边的糟糕英语。
我还看到您没有在表单中声明操作,如果您不这样做,您需要使用POST,用户可以发布您可以发送到DB的信息。