Php 将主键连接到MySQL中另一个表的行

Php 将主键连接到MySQL中另一个表的行,php,mysql,Php,Mysql,我创建了两个表: 第一个表,“用户”,由“用户id”(主键)、“用户名称”、“用户电子邮件”和“用户密码”组成 第二个表“characters”,由“char_id”(主键)、“uid”、“name”、“race”和年龄组成 我的目的是让用户创建字符,同时数据库将每个创建的字符分配给正确的用户id,这样就可以找出是谁创建了什么字符 (登录系统已在运行) 我从表格开始,填写字符表: <form method="post" action="includes/createcharacter.

我创建了两个表:

  • 第一个表,“用户”,由“用户id”(主键)、“用户名称”、“用户电子邮件”和“用户密码”组成

  • 第二个表“characters”,由“char_id”(主键)、“uid”、“name”、“race”和年龄组成

我的目的是让用户创建字符,同时数据库将每个创建的字符分配给正确的用户id,这样就可以找出是谁创建了什么字符

(登录系统已在运行)

我从表格开始,填写字符表:

<form method="post" action="includes/createcharacter.inc.php">
    <input type="text" name="name">
    <input type="text" name="race">
    <input type="number" name="age">
<button type="submit" name="create">Erstellen</button>
</form>

厄斯泰伦
接着是createcharacter.inc.php文件,该文件执行其背后的php操作:

<?php

if (isset($_POST['create'])) {

include_once 'dbh.inc.php';

$name = mysqli_real_escape_string($conn, $_POST['name']);
$race = mysqli_real_escape_string($conn, $_POST['race']);
$age = mysqli_real_escape_string($conn, $_POST['age']);

$sql = "INSERT INTO characters (name, race, age) VALUES ('$name', '$race', '$age');";
mysqli_query($conn, $sql);
header("Location: ../createcharacter2.php?charactercreated");
exit();

}

亲爱的耶稣,我花了整整一个晚上才弄明白如何在会议中插入它。以下是我的解决方案:

我只是在表格中添加了以下输入:

if (isset($_SESSION['u_id'])) {

    echo "
<form method='post' action='includes/createcharacter.inc.php'>
<input type='hidden' name='created_by' value='".$_SESSION['u_id']."'>
<input type='text' name='name'>
<input type='text' name='race'>
<input type='number' name='age'>
<button type='submit' name='create'>Erstellen</button>
</form>";

}
if(isset($\u SESSION['u\u id'])){
回声“
厄斯泰伦
";
}
我还将列“uid”的名称更改为“created_by”,就像-now deleted respond-建议的那样。对我来说更有意义。之后,include文件如下所示:

    <?php

if (isset($_POST['create'])) {

include_once 'dbh.inc.php';

$name = $_POST['name'];
$race = $_POST['race'];
$age = $_POST['age'];
$created_by = $_POST['created_by'];


$sql = "INSERT INTO characters (name, race, age, created_by) VALUES ('$name', '$race', '$age', '$created_by');";
mysqli_query($conn, $sql);
header("Location: ../createcharacter2.php?charactercreated");
exit();

}

如果角色是由登录的用户创建的,那么您的会话中应该已经有了登录用户的id。从那里插入它。请注意,您的脚本会受到sql注入攻击。请从任何有关php与MySQL结合使用的书籍或教程开始。我相信它会涵盖你需要知道的大部分内容。在进一步讨论之前,请参阅关于sql注入以及准备好的和绑定的查询的重要性请参阅我的基于PHP和PDO的应用程序系统配置文件,其中说明了如何使用绑定参数(以及其他内容)。