我对PHP和SQL很陌生。我只是想在创建了一个用户团队之后注册一个用户。我用过的桌子-
team
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不能添加或更新子行:外键约束failsMysql错误1452不能添加或更新子行:外键约束失败
示例-我已经预先输入了team表的内容-
idTeam - teamName
1 Arsenal
2 Chelsea
3 Liverpool现在,如果我想添加一个用户,那么我将通过输入用户表来添加他-
idUser team name username password
1 2 abc root pass因此,在这里,我无法确定我应该在PHP代码中使用什么查询?
发布于 2015-11-02 12:49:23
在idTeam='$team附近的第一个sql查询中有一个单引号。idTeam是整数类型。所以它不需要在单引号之内。确保您正在传递team表中存在的$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"); 发布于 2015-11-02 12:36:02
需要在team表中存在对应于传递给$team的值的记录
发布于 2015-11-02 12:36:41
外键关系包括保存中心数据值的父表和指向其父表的相同值的子表。外键子句在子表中指定。
如果父表中没有匹配的候选键值,则它将拒绝尝试在子表中创建外键值的任何插入或更新操作。
https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
https://stackoverflow.com/questions/33477661
复制相似问题