使用mysql和php进行插入查询时出现问题

时间:2019-02-14 18:17:53

标签: php

问题出在插入查询中。如果我们在数据库中插入单个数据,则会插入多次,因为主键(自动增量)增加了,但是用户给出的值没有存储在数据库中,为什么?

<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设计)中提出了一些问题,应该将其插入评论列中。

1 个答案:

答案 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 statementsbind_param来保护您的应用程序安全。