我试图找到一种方法来插入当前的用户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'])
然后,从aGET中获取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提交按钮时
那么,您的表单为noaction=""
如果不采取行动,表格应自行提交。这也许可以,但这也可能是一个潜在的问题。
我建议您修复所有这些问题,之后如果仍然不起作用,您只需在任何地方添加echo语句就可以了解发生了什么。

10-06 14:21