如何从 PHP 上的 $_GET 值向数据库 table 插入数据

How to insert data to database table from $_GET value on PHP

为什么我无法将 1 个字段插入到我的数据库中 table?

我循环我的另一个 table 的数据以显示每个数据并将结果放入 href 标签以便它可以点击并与其 id 连接因此它会将 id 结果放在 link 像这样:

<a href="scheduling.php?CID=<?php echo $rows['docID']; ?>">

以下是我如何使用第 1 页上的 php 循环我的数据:

<?php
$sel = "SELECT * FROM doctors ORDER BY docID";
$result = $conn->query($sel);
if($result->num_rows>0)
{
    while($rows = $result->fetch_array())
    {
        ?>
        <a href="scheduling.php?CID=<?php echo $rows['docID']; ?>">
        <div class="doc_item" style="width:310px; border:4px solid #009973;display:inline-block; margin-top:40px; margin-right:20px;">
            <img src="images/ft-img.png" style="width: 300px;">
            <div class="item-lvl" style="width: 100%; background:#009973; color:#fff; height:70px; padding-top:10px;">
                <h4 style="font-size:20px; font-weight:bold;">Dr. <?php echo $rows['docFname']; ?></h4>
                <span><?php echo $rows['docType']; ?></span>
            </div>
            <div style="width: 100%; background:#00664d;padding-top:15px; padding-bottom:20px;">
                <h3 style="color:#fff;">Make a Schedule!</h3>
            </div>
        </div>
        </a>
        <?php
    }
}
?>

然后我想使用第 2 页上的代码将 CID 的值添加到我的数据库 table:

<?php
    if (isset($_POST['btn-submit'])) {
        $cusID = $customerID;
        $docID = $_GET['CID'];
        $checkupType = $_POST['checkupType'];
        $schedTime = $_POST['schedTime'];
        $contact = $_POST['contact'];

        $ins = "INSERT INTO schedule 
                        (customerID, docID, checkupType, schedTime, contact) 
                  VALUE ('$cusID','$docID','$checkupType','$schedTime','$contact')";
        if($conn->query($ins)===TRUE) {
            header('location:success_sched.php');
        }else{
            echo "SQL Query: " . $ins . "->Error: " . $conn->error;
        }
    }

现在,这段代码将数据插入到我的数据库中 table 除了 $docID 的值是 $_GET['CID']; docID 列是整数。 请更正我的代码,这是我的学校项目。

第 2 页的表单代码:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
                            <div class="sign-u">
                                <div class="sign-up1">
                                    <h4>Form of Checkup* :</h4>
                                </div>
                                <div class="sign-up2">
                                    <label>
                                        <input type="radio" value="Virtual" name="checkupType" required>
                                        Virtual Checkup
                                    </label>
                                    <label>
                                        <input type="radio" value="Facetoface" name="checkupType" required>
                                        Face to Face Checkup
                                    </label>
                                </div>
                                <div class="clearfix"> </div>
                            </div>
                            <p style="color:gray;">*Take note that virtual checkup will require a you stable internet for better communication.</p>
                            
                            <div class="sign-u">
                                <div class="sign-up1">
                                    <h4>Date and Time* :</h4>
                                </div>
                                <div class="sign-up2">
                                        <input type="date" name="schedTime" id="date" required> 
                                </div>
                                <div class="clearfix"> </div>
                            </div>
                            
                            <p style="color:gray;">*Please provide Skype id as a contact information if <span style="color:#ff5c33">Virtual Checkup</span> is your choice.</p>
                            <div class="sign-u">
                                <div class="sign-up1">
                                    <h4>Contact Information :</h4>
                                </div>
                                <div class="sign-up2">
                                    
                                        <input type="text" name="contact">
                                    
                                </div>
                                <div class="clearfix"> </div>
                            </div>
                            <div class="sub_home" style="text-align: right;">
                                
                                    <input style="background: #339966;" type="submit" name="btn-submit" value="Submit">
                                
                                <div class="clearfix"> </div>
                            </div>
                        </form>

请理解,当您提交表单时,即是对服务器的新请求。它有一个新的 URL。您的第 2 页表单提交到 $_SERVER['PHP_SELF']; - 这是当前 URL 但 没有查询字符串变量 。因此,您的 GET 参数不会在表单提交中传递。 (如果您在呈现后使用浏览器的“查看源代码”功能检查表单的“操作”属性,您将确切地看到 URL 它在提交时向什么发出请求。您还可以看到通过查看浏览器的网络工具或网络服务器的访问日志,同样的事情。)

有几种解决方法,但我建议将该值添加为表单中的隐藏字段,并在上一次请求期间使用 GET 参数的值填充它。

例如

<input type="hidden" value="<?php echo $_GET["CID]; ?>" name="CID">

然后在 PHP 中,像所有其他变量一样通过 $_POST 检索它:

$docID = $_POST['CID'];

最后,请确保按照评论中的建议更新您的代码以使用准备好的语句和参数,这样您就可以免受 SQL 注入攻击和意外语法错误的侵害。您可以获得更多信息和示例 here