我有一个在线课程CRUD应用程序。除其他页面外,它还有一个讲师BIO 页面。
首先,教师在用户表中添加基本数据:first_name,last_name和email;然后可以选择为任何教师添加BIO。为了达到这个目的,有一个名为" bios"的第二个数据库表。
我需要将$user_id
传递到课程表,(作为外国KEY)为此我使用 $ _ GET :
<?php
$user_id = $_GET['id'];
if(isset($_POST['submit-btn'])) {
$no_courses = $_POST['no_courses'];
$years_exp = $_POST['years_exp'];
$fav_lang = $_POST['fav_lang'];
$courses = $_POST['courses'];
$sql = "INSERT INTO courses (user_id, no_courses, years_exp, fav_lang, courses) VALUES ('$user_id', '$no_courses', '$years_exp', '$fav_lang', '$courses')";
if (mysqli_query($con, $sql)) {
echo("<p>Instructor bio was added.</p>");
} else {
echo "Error: " . mysqli_error($con);
}
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="add_bio">
...
</form>
使用$_GET
似乎很方便,因为在一个包含很多行的表中,包含教师,在最右边的单元格/列上,我有一组用于CRUD操作的链接按钮,&#34;添加bio&# 34;是其中一个按钮。
<a title="Add bio" href="add_bio.php?id=<?php echo $arr['id']?>"><span class="glyphicon glyphicon-plus-sign"></span></a>`
但是,不是传递$user_id
变量以便可以添加bio,服务器会抛出这些错误:
注意:未定义的索引:第7行的E:\ xampp \ htdocs \ courses \ add_bio.php中的id 错误:无法添加或更新子行:外键约束失败
如果我想保留上面提到的CRUD链接,我如何传递用户的ID?
谢谢!
答案 0 :(得分:0)
您提交的内容可能存在一些问题。
一个很棒的故障排除方法是: 的print_r($ _ GET); 要么 的print_r($ _ POST);
另一个选择是: echo print_r($ _ GET,true); 第二个参数(True)告诉print_r函数以字符串形式返回而不是输出到浏览器。
检查输出并验证您实际上在GET和POST变量中获得了“ID”值。
此外,一些安全问题,您从GET或POST或REQUEST或COOKIE中获取的任何数据都应该“清理”,您可以查看: mysqli_real_escape_string
此外,永远不要使用PHP_SELF。在几乎所有情况下,都可以操纵它来执行跨站点脚本攻击,这是个坏消息。如果要将表单提交到当前脚本,可以将“action”属性保留为空字符串。 行动= “”
希望这有帮助!!!
答案 1 :(得分:0)
表单在提交按钮正上方缺少此行:
<input type="hidden" name="id" value="<?php $user_id;?>">