问题出在插入查询中。如果我们在数据库中插入单个数据,则会插入多次,因为主键(自动增量)增加了,但是用户给出的值没有存储在数据库中,为什么?
<html>
<head>
<title>comment</title>
</head>
<body>
<?php
require('db.php');
?>
<form action="db.php" method="get">
<input type="textarea" name="textarea" rows="4" value="" >
<input type="submit" name="submit" value="submit">
</form>
<?php
$comment = isset($_GET['textarea']) ? $_GET['textarea'] : '';
$sql="INSERT INTO comment(comments) VALUES('$comment')";
mysqli_query($con,$sql);
?>
</body>
</html>
实际的表名是comment,列名是comment_id和comments。 如果用户在textarea(采用HTML设计)中提出了一些问题,应该将其插入评论列中。
答案 0 :(得分:0)
您不应将表单提交到第7行所需的同一文件。
而是将表单提交给自己。试试这个:
<html>
<head>
<title>comment</title>
</head>
<body>
<?php
require('db.php');
if(!isset($_GET['submit']))
{
?>
<form method="get">
<input type="textarea" name="textarea" rows="4" value="" >
<input type="submit" name="submit" value="submit">
</form>
<?php
} else {
$comment = isset($_GET['textarea']) ? $_GET['textarea'] : '';
$sql="INSERT INTO comment(comments) VALUES('$comment')";
mysqli_query($con,$sql);
}
?>
</body>
</html>
就像评论中提到的@aynber一样,利用prepared statements和bind_param来保护您的应用程序安全。