Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用外键在表中插入值_Php_Mysql_Sql_Database_Foreign Keys - Fatal编程技术网

在php中使用外键在表中插入值

在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

我不熟悉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');

$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");