从$ _GET获取价值并将其用作ID

时间:2018-09-08 19:43:05

标签: php html mysql

我在接收$ _GET值时遇到问题,我需要将其作为ID来更新我的表。 我正在使用<a href='includes/edit_section.php?id=$id'>Change</a>。正确获取变量$ id并可以正常工作,当我单击此链接(因为它在表中)时,它显示正确的值。 但是问题出在下一部分,当我用$ _GET接受它时。我试图使变量($ id = $ _GET ['id']),但没有任何变化。 当我执行此操作时,没有任何更新,当我将$ _GET替换为数字时,它会正常工作。

我的桌子看起来像这样Table(ID,Title,Paragraph,Image)

这是我的代码:

<?php

if(isset($_POST['submit'])) {
    $title  = $_POST['title'];
    $paragraph  = $_POST['paragraph'];

    $query = "UPDATE table SET title = '{$title}', paragraph = '{$paragraph}' WHERE id = '{$_GET['id']}' ";
    $c= mysqli_query($connection, $query);
}

这是我的表格

<form action="edit_section.php" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" name="title">
        <label for="paragraph">Paragraph</label>
        <input type="text" class="form-control" name="paragraph">
     </div>

    <div class="form-group">
         <input class="btn btn-primary" type="submit" name="submit" value="cHANGE">
     </div>
</form>

4 个答案:

答案 0 :(得分:0)

在顶部添加

 $id = $_GET['id'];

然后

基本上是问题所在

    <form action="edit_section.php" 

应该是

    <form action="edit_section.php?id=<?php echo $id;?>"
您的更新查询ID中的

plus应该是ID(大写)。还要检查其他列名是否区分大小写

答案 1 :(得分:0)

像tihs一样在HMTL上更改表单的动作

<form action="edit_section.php?<?=$_GET['id']?>" method="post" enctype="multipart/form-data">   

答案 2 :(得分:0)

在表单中添加“ id”作为隐藏变量。

已编辑-省略了表单中隐藏的“ id”值的双引号。

<form action="edit_section.php" method="post" enctype="multipart/form-data">  
    <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">  
                                        <div class="form-group">
                                            <label for="title">Title</label>
                                            <input type="text" class="form-control" name="title">
                                            <label for="paragraph">Paragraph</label>
                                            <input type="text" class="form-control" name="paragraph">
                                         </div>

                                        <div class="form-group">
                                             <input class="btn btn-primary" type="submit" name="submit" value="cHANGE">
                                         </div>
                                    </form>

对您的PHP脚本进行以下更改

<?php
if(isset($_POST['submit'])) {
    $title  = $_POST['title'];
    $id = $_POST['id'];
    $paragraph  = $_POST['paragraph'];

      $query = "UPDATE table SET title = '{$title}', paragraph = '{$paragraph}' WHERE id = '{$id}' ";    

      $c= mysqli_query($connection, $query);  
   }  
   ?>

答案 3 :(得分:0)

问题是提交表单时需要发送id,传统的处理方式是使用隐藏类型输入,例如<input type="hidden" name="id" value="<?= $id ?>">,当然,有必要将ID传递到呈现表单的视图中

所以您可以尝试这个

<form action="edit_section.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="id" value="<?= $id ?>">

    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" name="title">
     </div>

     <div class="form-group">
         <label for="paragraph">Paragraph</label>
         <input type="text" class="form-control" name="paragraph">
     </div>

    <div class="form-group">
         <input class="btn btn-primary" type="submit" name="submit" value="cHANGE">
     </div>
</form>

在处理表格时

<?php

if(isset($_POST['submit'])) {
    $id = $_POST['id'];
    $title  = $_POST['title'];
    $paragraph  = $_POST['paragraph'];

    $query = "UPDATE table SET title = '{$title}', paragraph = '{$paragraph}' WHERE id = '{$id}' ";
    $c= mysqli_query($connection, $query);
}

我以标题和段落的输入形式将其分开