如何解决如何在 PHP 上从 $_GET 值插入数据到数据库表
为什么我不能将 1 个字段插入到我的数据库表中?
我循环另一个表的数据以显示每个数据并将结果放入 href
标签,以便它可点击并与它的 id 连接,以便将 id 结果放在链接之后,如下所示:
<a href="scheduling.php?CID=<?php echo $rows['docID']; ?>">
这是我在 page1 上使用 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 注入攻击和意外语法错误的侵害。您可以获得更多信息和示例here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。