簡體   English   中英

通過php表單在同一頁面上插入mysql數據?

[英]Insert mysql data via a php form on the same page?

我希望通過位於同一頁面上的PHP代碼將php表單中的數據插入到mysql數據庫中。

<?php
if (isset($_POST['submit'])){
$con=mysqli_connect("localhost","root","********","*********");
$sql="INSERT INTO drafts (id, title, description, post, author, category, declined)
VALUES
('','$_POST[title]',$_POST[description],$_POST[post],$_POST[author],$_POST[category],0)";
echo "Droplet Successfully Added!";}
?>

<form action="create-post.php" method="post">
  Title: <br /><input type="text" name="title"><br /><br />
  Description: <br /><textarea name="description"></textarea><br /><br />
  Post: <br /><textarea name="post"></textarea><br /><br />
  Author: <br /><input type="text" name="author"><br /><br />
  Category: <br /><input type="text" name="category"><br /><br />
  <input class="btn btn-info" type="submit" value="Submit for review">
</form>

目前,當用戶填寫上面的表單並單擊提交按鈕時,表單數據將被發送到名為create-post.php的PHP文件進行處理。

現在,如果將action屬性留空,表單將提交給自己:

<?php
if (isset($_POST['submit'])) {

    $con=mysqli_connect("localhost","root","********","*********");
    $sql="INSERT INTO drafts (id, title, description, post, author, category, declined)
    VALUES
    ('','$_POST[title]',$_POST[description],$_POST[post],$_POST[author],$_POST[category],0)";
    echo "Droplet Successfully Added!";

}
?>

<form action="" method="post">
    Title: <br /><input type="text" name="title"><br /><br />
    Description: <br /><textarea name="description"></textarea><br /><br />
    Post: <br /><textarea name="post"></textarea><br /><br />
    Author: <br /><input type="text" name="author"><br /><br />
    Category: <br /><input type="text" name="category"><br /><br />
    <input class="btn btn-info" type="submit" value="Submit for review">
</form>

當用戶訪問該頁面時,將不會設置$_POST['submit'] ,並且if塊中的語句將不會被執行,並且將顯示該表單。 填寫表單並且用戶單擊提交按鈕后, $_POST超全局數組將填充表單輸入, if條件將評估為TRUE ,因此語句將被執行。


不相關的注釋:您當前正在接受用戶輸入並直接將其插入查詢中。 它易受SQL注入攻擊。 永遠不要相信用戶輸入。 請參閱bobby-tables以了解有關SQL注入以及如何防止它的更多信息。

  1. 對於同一頁面插入,將<form action="create-post.php" method="post"> to <form action="" method="post">

  2. 糾正查詢,如$sql="INSERT INTO drafts (標題,描述,帖子,作者,類別,拒絕) VALUES ('$_POST[title]', '$_POST[description]', '$_POST[post]', '$_POST[author]', '$_POST[category]', 0)";

  3. 添加此行$query = mysqli_query($con,$sql);

這三個更改將完成工作,但它不是最佳實踐,您接受來自用戶的直接輸入,因此易受SQL注入攻擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM