我试图找到一种方法来插入当前的用户id和cursuscode到我的数据库,但他们的方式我正在尝试的是,它还没有成功。如果有人点击提交按钮,我想把它推到数据库中,但当我点击按钮什么也不会发生。这就是为什么我认为查询不对/语法不对,或者我使用post方法的方式不对。
<?php
session_start();
require_once('includes/mysql_config.php');
$id = isset($_SESSION['id']) ? $_SESSION['id'] : header('location: login.php');
$Cursist = mysqli_query($con, "SELECT id FROM Cursist WHERE id =".$_SESSION['id']) || false;
if(!$Cursist){
header('location: login.php');
}
require_once('./header.php');
$cursusCode = $_GET['cursusCode'];
$query = "SELECT * FROM cursus WHERE cursusCode = $cursusCode";
$result = mysqli_query($con, $query);
$amount = mysqli_affected_rows($con);
for ($i = 0; $i < $amount; $i++) {
$cursus = mysqli_fetch_array($result);
?>
<?php
if(isset( $_POST['submit'] )){
$SQL = "INSERT INTO cursistCode (Cursus_cursusCode, Cursist_id) VALUES ($cursusCode, $Cursist)";
$result = mysql_query($SQL);
}?>
<header>
</header>
<?php require_once('./navigation.php'); ?>
<!-- Post Content -->
<article>
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="post-preview">
<?php echo $cursus['description'] . "<br />";?>
</div>
</div>
</div>
<a href="logout.php">Logout</a>
<form method="post" name="myform">
<input type="submit" value="Schrijf je in" name="submit">
</form>
Cursussoort:
<?php echo $cursus['type'] . "<br />";?>
</div>
</div>
</article>
<?php } ?>
<hr>
<?php require_once('./footer.php'); ?>
我做错了什么,因为据我所知这应该没问题。我的数据库结构如下:
草书
id(pk)链接到cursistcode表中的cursist\u id(一对多)
名称
密码
此查询中未使用的信息
光标代码
草码
诅咒者
库苏
指向cursus\u cursucode的id(pk)链接
此查询中未使用的信息
我的客人可能是我做错了什么:
if(isset( $_POST['submit'] )){
$SQL = "INSERT INTO cursistCode (Cursus_cursusCode, Cursist_id) VALUES ($cursusCode, $Cursist)";
$result = mysql_query($SQL);
}?>
我希望这将是足够的信息来帮助我,如果我错过了一些关键信息告诉我。
最佳答案
你的代码真的有很多问题…
从最危险的开始:
$cursusCode = $_GET['cursusCode'];
$query = "SELECT * FROM cursus WHERE cursusCode = $cursusCode";
这是一个sql注入邀请。最好使用参数化查询,至少使用
mysql_real_escape_string($_GET['cursusCode'])
然后,从a
GET
中获取cursus code变量,并从db中检索具有此cursus代码的所有cursus。从您接下来的操作来看,您的数据库中可能有几个具有相同cursuscode的cursus。
你说的cursuscode是你cursus表中的一个pk,我觉得很奇怪。
一旦检索到cursus的数量,就为每个cursus启动一个循环。
for ($i = 0; $i < $amount; $i++) {
$cursus = mysqli_fetch_array($result);
2种可能性:
如果你只有一个诅咒,你不应该做一个循环。
如果你有几个咒语,我们有很多错误:
在这个循环中,insert指令与您的操作方式无关,如果您有几个cursus,您将为每个cursus进行一次insert操作,而您的目标似乎只是注册一个用户对一个cursus的订阅。在循环之前移动此逻辑,即使只能有一个cursus。
在循环中添加
navigation.php
和<header>
,这将导致几个导航栏如果有多个cursus,则应添加一个post变量,以知道用户在单击哪个cursus提交按钮时
那么,您的表单为no
action=""
如果不采取行动,表格应自行提交。这也许可以,但这也可能是一个潜在的问题。
我建议您修复所有这些问题,之后如果仍然不起作用,您只需在任何地方添加
echo
语句就可以了解发生了什么。