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

标签 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');

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

我曾经遇到错误 - Mysql 错误 1452 - 无法添加或更新子行:外键约束失败Mysql 错误 1452 - 无法添加或更新子行:外键约束失败

示例 - 我已预先输入团队表的内容-

idTeam - teamName
  1      Arsenal
  2      Chelsea
  3      Liverpool

现在,如果我想添加一个用户,那么我可以通过输入用户表来添加他-

idUser   team   name   username  password
  1        2    abc    root      pass

所以在这里我无法弄清楚我应该在 PHP 代码中使用什么查询?

最佳答案

第一个 sql 查询中 idTeam='$team 附近有一个单引号。 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"); 

关于php - 在php中使用外键在表中插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33477661/

相关文章:

sql - Firebird 中的表名有很多额外的空间

mysql - MySQL 中的唯一值组合

mysql - 如何在mysql中获取行id

mysql - 如何在 MySQL 中以三个一组的形式显示行

mysql - 批量删除后是否需要运行Optimize命令来平衡索引?

php - 登录系统,禁止用户php

php - MySQL - 在一对多关系中选择不匹配的数据

php - 我如何加快此 mysql 查询的速度以在大型 mysql 表(200 万行)中求和一个分数

php - 计算另一个表中与其 id 关联的行数

php - 如何从 laravel 上的不同项目获取图像?