如何在 php 中使用内部联接
How to use inner join in php
我想要一个选项值中 table 的所有 'acteurs',但我不知道该怎么做。我有两个 table,'auteurs' 和 'posts'。在帖子 table 中,我有一个名为 'auteur_id' 的列,它有一个指向 table 作者的外键。
当我 运行 我的 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>
这是我现在拥有的:
但我需要 table 作者的所有 'auteur' 值显示在 php 的作者选项中。
这是我 phpmyadmin 中的所有内容
导演 table:
帖子table:
每次迭代 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>
您还应该使用 query method or the safer prepare / execute 方法来执行查询。
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>
我想要一个选项值中 table 的所有 'acteurs',但我不知道该怎么做。我有两个 table,'auteurs' 和 'posts'。在帖子 table 中,我有一个名为 'auteur_id' 的列,它有一个指向 table 作者的外键。
当我 运行 我的 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>
这是我现在拥有的:
帖子table:
每次迭代 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>
您还应该使用 query method or the safer prepare / execute 方法来执行查询。
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>