【发布时间】:2017-01-25 21:13:20
【问题描述】:
我有一个在线课程 CRUD 应用程序。除其他页面外,它还有一个instructor BIO页面。
首先,在 users 表中添加讲师,其中包含基本数据:first_name、last_name 和 email;然后可以选择为任何讲师添加 BIO。还有一个名为“bios”的数据库表用于此目的。
我需要将$user_id 传递到 courses 表中,(作为外键)为此我使用 $_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 操作的链接按钮,“添加生物”是其中一个按钮.
<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?
谢谢!
【问题讨论】:
-
那么 id 是否在 url 中?是那个代码
add_bio.php因为第7行与用户ID无关 -
是的,它是:add_bio.php?id=5。那是在提交表单之前。
-
看来您正在尝试
INSERT而不是UPDATE... 另请注意,您的应用程序对 SQL injection 非常开放 -
为什么对SQL注入开放?我该如何解决?谢谢!
-
添加讲师的简历不存在。当然我正在尝试插入而不是更新。没有可更新的内容。
标签: php mysql mysqli crud grocery-crud