簡體   English   中英

如何從 PHP 上的 $_GET 值將數據插入數據庫表

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

為什么我不能將 1 個字段插入到我的數據庫表中?

我循環我的另一個表的數據以顯示每個數據並將結果放入href標記,以便它可以點擊並與它的 id 連接,因此它將把 id 結果放在鏈接之后,如下所示:

<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 的值添加到我的數據庫表中:

<?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;
        }
    }

現在,此代碼將數據插入到我的數據庫表中,但 $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 注入攻擊和意外語法錯誤的影響。 您可以在此處獲取更多信息和示例

暫無
暫無

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

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