在php中使用外键在表中插入值
我不熟悉PHP和SQL。我只想在创建一组用户后注册一个用户。 我使用过的表格- 团队在php中使用外键在表中插入值,php,mysql,sql,database,foreign-keys,Php,Mysql,Sql,Database,Foreign Keys,我不熟悉PHP和SQL。我只想在创建一组用户后注册一个用户。 我使用过的表格- 团队 idTeam int(11) PK + AI teamName varchar(25) 用户 idUser int(11) PK + AI name varchar(30) username varchar(30) password varchar(30) team int(11) FK 我使用了以下代码- <?php session_start(); include('conn.php'); $n
idTeam int(11) PK + AI
teamName varchar(25)
用户
idUser int(11) PK + AI
name varchar(30)
username varchar(30)
password varchar(30)
team int(11) FK
我使用了以下代码-
<?php
session_start();
include('conn.php');
$name=$_POST['name'];
$team=$_POST['team'];
$username=$_POST['username'];
$password=$_POST['password'];
$qry="SELECT * FROM team WHERE idTeam='$team";
if(mysqli_query($con,$qry)){
mysqli_query("INSERT INTO user(name, team, username, password)VALUES('$name', '$team', '$username', '$password')");
header("location: add_user.php?remarks=success");
mysqli_close($con);
}
else
mysqli_error($con);
?>
现在,如果我想添加一个用户,那么我将通过在user表中输入来添加他-
idUser team name username password
1 2 abc root pass
因此,在这里我无法弄清楚我应该在PHP代码中使用什么查询 团队表中需要存在一条记录,该记录对应于传递给
$team
的值。外键关系涉及一个包含中心数据值的父表,以及一个具有指向其父表的相同值的子表。外键子句在子表中指定
如果父表中没有匹配的候选键值,它将拒绝尝试在子表中创建外键值的任何插入或更新操作
在idTeam='$team附近的第一个sql查询中有一个单引号。idTeam是整数类型。因此,它不需要在单一的报价。确保传递的是团队表中存在的$team变量的值。试试下面的代码
$name=$_POST['name'];
$team=$_POST['team'];
$username=$_POST['username'];
$password=$_POST['password'];
$qry="SELECT * FROM team WHERE idTeam=$team";
$result = mysqli_query($qry);
$num_rows = mysqli_num_rows($result);
if($num_rows > 0){
mysqli_query("INSERT INTO user(name, team, username, password)VALUES('$name', $team, '$username', '$password')");
}else{
echo "Team is not valid!!!";
}
mysqli_close($con);
header("location: add_user.php?remarks=success");
是的,我在团队表中存储了多条记录。现在我想在用户表中添加用户。我应该使用什么查询?如果您提供团队表中记录的内容,那么我可以为您提供一个示例插入团队表的查询内容-idTeam-1,2,3 teamName-阿森纳,切尔西,利物浦现在如果我想添加一个用户,那么我会通过输入-idUser-1团队-2名称-abc用户名-根密码-Pass来添加他,可能外键的实现不正确。您还可以为表模式提供
show create table user
吗?请不要再使用mysql\uu
数据库扩展。显然,您正在学习花时间学习PDO
或MYSQLI
,您还尝试将mysql
和MYSQLI
数据库扩展混合使用。这不起作用坚持使用MYSQLI_uu
或PDO
如果您还向我们展示了将此脚本连接到数据库的代码,这可能是一个好主意。您是否正在使用MYSQLI_u
或MYSQLI_u
呢?我正在使用MYSQLI,并且我已经使用一个没有外键的虚拟数据库测试了数据库连接。我正在使用mysqli有时是,但不是每次都是使用mysql\u query()
查询team
表,并且从未实际处理结果集。老实说,代码一团糟,需要完全重构。看看你的PHP错误日志
,应该有很多线索可以找到哪里出了问题。或者,在打开PHP标记后立即进行测试时,将错误报告添加到文件顶部,例如,有时您也没有发现使用mysql\uu
,有时使用mysqli\u
,谢谢您的指导。修复了此问题。:)
$name=$_POST['name'];
$team=$_POST['team'];
$username=$_POST['username'];
$password=$_POST['password'];
$qry="SELECT * FROM team WHERE idTeam=$team";
$result = mysqli_query($qry);
$num_rows = mysqli_num_rows($result);
if($num_rows > 0){
mysqli_query("INSERT INTO user(name, team, username, password)VALUES('$name', $team, '$username', '$password')");
}else{
echo "Team is not valid!!!";
}
mysqli_close($con);
header("location: add_user.php?remarks=success");