繁体   English   中英

如何在php中使用内连接

[英]How to use inner join in php

我想要一个表的所有'acteurs' 选项的值,但我不知道如何。 我有两个表,“auteurs”和“posts”。 在帖子表中,我有一个名为“auteur_id”的列,它有一个指向 auteurs 表的外键。

当我运行 php 中的这个 sql 代码时,它也会在我的 phpmyadmin 中提供良好的输出。 在此处输入图片说明

我的代码:

<html>

    <head>
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>

    <body>
        <div class="container">

            <div id="header">
                <h1>Nieuwe post</h1>
                <a href="index.php"><button>Alle posts</button></a>
            </div>

        <?php
            $host = 'localhost';
            $username = 'root';
            $password = '';
            $dbname = 'foodblog';
            $dsn = 'mysql:host=' . $host . ';dbname=' . $dbname;
            
            try {
                $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
                // set the PDO error mode to exception
                $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            } catch (PDOException $e) {
                echo "Connection failed: " . $e->getMessage();
            }
            
        try {
            if (isset($_POST["submit"])) {
                $titel = $_POST['titel'];
                $img = $_POST['img_url'];
                $inhoud = $_POST['inhoud'];
                $sql = "INSERT INTO posts (titel, img_url, inhoud) 
                VALUES ('$titel', '$img', '$inhoud')";
                $conn->exec($sql);
            } else {
        ?>
                <form action="new_post.php" method="post">
                Titel:<br/> <input type="text" name="titel"><br/><br/>
                Auteurs:<br><select name='auteurs'>
                <option value='<?php
                $sql2 = "SELECT * 
                FROM posts
                INNER JOIN auteurs
                ON posts.auteur_id = auteurs.id";
                $conn->exec($sql2);
                foreach ($sql2 as $rows) {
                    $rows['auteur'];
                }
                ?>'>
                </select>
                <br><br>
                URL afbeelding:<br/> <input type="text" name="img_url"><br/><br/>
                Inhoud:<br/> <textarea name="inhoud" rows="10" cols="100"></textarea>
                <br/><br/>
                <input type="submit" name="submit" value="Publiceer">
                </form>
        <?php
            }
        } catch(error) {
            console.error(error);
        }
        ?>

    </body>
</html>

这就是我现在所拥有的: 在此处输入图片说明 但是我需要将 auteurs 表中的所有“auteur”值显示在 php 的 auteurs 选项中。 这是我的 phpmyadmin auteurs 表中的所有内容:

在此处输入图片说明

帖子表: 在此处输入图片说明

每次迭代 SELECT 查询时都必须创建一个新选项。

<form action="new_post.php" method="post">
    Titel:<br/> <input type="text" name="titel"><br/><br/>
    Auteurs:<br>
    <select name='auteurs'>
        <?php
        $sql2 = "SELECT * FROM posts INNER JOIN auteurs ON posts.auteur_id = auteurs.id";
        $res = $conn->query($sql2);
        foreach ($res as $row) {
            echo "<option value='".$row['auteur']."'>".$row['auteur']."</option>";
        }
        ?>
    </select>
    <br><br>
    URL afbeelding:<br/> <input type="text" name="img_url"><br/><br/>
    Inhoud:<br/> <textarea name="inhoud" rows="10" cols="100"></textarea>
    <br/><br/>
    <input type="submit" name="submit" value="Publiceer">
</form>

此外,您应该使用查询方法或更安全的准备/执行方法来执行查询。

    Use like below for select box:
       <select name='auteurs'>
              <?php
                $sql2 = "SELECT * FROM auteurs ";
                $sql2=$conn->query($sql2);
                foreach ($sql2 as $rows) { ?>
                   <option value='<?php echo $rows['id'];?>'><?php echo $rows['auteur'];?></option>
                    
                <?php } ?> 
  </select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM