私は次のエラーメッセージを取得しようとすると、だから私は、次の表を作っていると私はinsert.phpページを介してプレイヤーのテーブルにプレーヤーを追加しようとしていますと:子行、外部キー制約を追加または更新できませんか?
ErrorCannotを子を追加または更新行:
:外部キー制約が失敗した(。football_db
player
、CONSTRAINTplayer_ibfk_1
FOREIGN KEY(teamID
)team
(teamID
)を参照)。ここ
は、SQL私のテーブル用のコード、そのかなり基本的なものです
CREATE TABLE player (
playerID int(3) AUTO_INCREMENT NOT NULL,
playerName VARCHAR(50) NOT NULL,
playerAge int(3) NOT NULL,
playerNation VARCHAR(60) NOT NULL,
playerPosition VARCHAR(50) NOT NULL,
playerTeam VARCHAR(50) NOT NULL,
teamID int(3) NOT NULL,
PRIMARY KEY(playerID),
FOREIGN KEY(teamID) REFERENCES team(teamID)) ENGINE=innodb;
CREATE TABLE team (
teamID int(3) AUTO_INCREMENT NOT NULL,
teamName VARCHAR(50) NOT NULL,
teamLeague VARCHAR(70),
yearFounded int(5) NOT NULL,
teamCrest VARCHAR(30),
leagueID int(3) NOT NULL,
PRIMARY KEY(teamID),
FOREIGN KEY(leagueID) REFERENCES league(leagueID)) ENGINE=innodb;
CREATE TABLE league (
leagueID int(3) AUTO_INCREMENT NOT NULL,
leagueName VARCHAR(50) NOT NULL,
leagueRegion VARCHAR(50) NOT NULL,
leagueSize int(3) NOT NULL,
leagueLogo VARCHAR(50) NOT NULL,
yearStarted int(4) NOT NULL,
PRIMARY KEY(leagueID)) ENGINE=innodb;
CREATE TABLE users (
user_id int(3) AUTO_INCREMENT NOT NULL,
user_name VARCHAR(30) NOT NULL,
user_email VARCHAR(70) NOT NULL,
user_pass VARCHAR(20) NOT NULL,
PRIMARY KEY (user_id)) ENGINE=innodb;
ここに私のPHPコードが挿入ページにあります。
<?php
include 'connect.php';
if(isset($_POST['button-submit'])){
$sql = "insert into player (playerName, playerAge, playerNation, playerPosition, playerTeam) values ('".$_POST['player_name']."', '".$_POST['player_age']."', '".$_POST['player_nation']."', '".$_POST['player_nation']."', '".$_POST['player_team']."')";
if(mysqli_query($con, $sql)){
header('Location:index.php');
}
else {
echo 'Error'.mysqli_error($con);
}
}
?>
<h2>Add player</h2>
<form action="" method="POST">
<label>Player Name: </label>
<input name="player_name">
<br>
<label>Player Age: </label>
<input name="player_age">
<br>
<label>Player Nation: </label>
<input name="player_nation">
<br>
<label>Player Position: </label>
<input name="player_position">
<br>
<label>Player Team: </label>
<input name="player_team">
<br>
<input type="submit" name="button-submit">
</form>
と私のインデックスページデータに
<?php
require "connect.php"
?>
<h2> Player Lists </h2>
<h3><a href="insertPlayer.php">Add player!</a></h3><br>
<table border="1" cellspacing="0" cellpadding="5px">
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th>Nation</th>
<th>Position</th>
<th>Team</th>
<th>Team ID</th>
</tr>
<?php
$sql = 'select playerID, playerName, playerAge, playerNation, playerPosition, playerTeam, teamID from player';
$result = mysqli_query($con, $sql);
if(mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
?>
<tr>
<td><?=$row['playerID']?></td>
<td><?=$row['playerName']?></td>
<td><?=$row['playerAge']?></td>
<td><?=$row['playerNation']?></td>
<td><?=$row['playerPosition']?></td>
<td><?=$row['playerTeam']?></td>
<td><?=$row['teamID']?></td>
</tr>
<?php
}
}
?>
</table>
を表示するには、これはあなたのほとんどに非常に基本的であるならば、私は非常に残念ですが、私はちょうど2ヶ月のように、大学でのPHPとMySQLを開始しました私の目標は、チームIDがチェルシーの場合は1、別のチームの場合は2、それ以外の場合は3、チェルシーなどの場合は1です。
UPDATE
<?php
include 'connect.php';
$teamName = $_POST['player_team'];
$teamID = "select teamID from team WHERE teamName = $teamName";
if(isset($_POST['button-submit'])){
$sql = "insert into player (playerName, playerAge, playerNation, playerPosition, playerTeam, teamID) values ('".$_POST['player_name']."', '".$_POST['player_age']."', '".$_POST['player_nation']."', '".$_POST['player_nation']."', '".$_POST['player_team']."', '".$teamName."')";
if(mysqli_query($con, $sql)){
header('Location:index.php');
}
else {
echo 'Error'.mysqli_error($con);
}
}
?>
<h2>Add player</h2>
<form action="" method="POST">
<label>Player Name: </label>
<input name="player_name">
<br>
<label>Player Age: </label>
<input name="player_age">
<br>
<label>Player Nation: </label>
<input name="player_nation">
<br>
<label>Player Position: </label>
<input name="player_position">
<br>
<label>Player Team: </label>
<input name="player_team">
<br>
<input type="submit" name="button-submit">
</form>
[OK]をので、私は、コードを更新している、今、私は私が
UPDATE 2
<?php
include 'connect.php';
if(isset($_POST['button-submit'])){
$teamName = $_POST['player_team'];
$teamID = "select teamID from team WHERE teamName = ".$_POST['player_team'];
$sql = "insert into player (playerName, playerAge, playerNation, playerPosition, playerTeam, teamID) values ('".$_POST['player_name']."', '".$_POST['player_age']."', '".$_POST['player_nation']."', '".$_POST['player_position']."', '".$_POST['player_team']."', '".$teamID."')";
if(mysqli_query($con, $sql)){
header('Location:index.php');
}
else {
echo 'Error'.mysqli_error($con);
}
}
?>
<h2>Add player</h2>
<form action="" method="POST">
<label>Player Name: </label>
<input name="player_name">
<br>
<label>Player Age: </label>
<input name="player_age">
<br>
<label>Player Nation: </label>
<input name="player_nation">
<br>
<label>Player Position: </label>
<input name="player_position">
<br>
<label>Player Team: </label>
<input name="player_team">
<br>
<input type="submit" name="button-submit">
</form>
UPDATE 3を理解カント4行目にエラー未定義のインデックスを取得しています
<?php
include 'connect.php';
if(isset($_POST['button-submit'])){
$teamName = $_POST['player_team'];
$stmt = "SELECT teamID FROM team WHERE teamName = '".$teamName."'";
$teamID = mysqli_query($con, $stmt);
$sql = "INSERT INTO player (playerName, playerAge, playerNation, playerPosition, teamID) values ('".$_POST['player_name']."', '".$_POST['player_age']."', '".$_POST['player_nation']."', '".$_POST['player_position']."', $teamID)";
if(mysqli_query($con, $sql)){
header('Location:index.php');
}
else {
echo 'Error'.mysqli_error($con);
}
}
?>
コメントは議論の対象外です。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/160950/discussion-on-question-by-shlongmor-cannot-add-or-update-child-row-foreign-key) 。 – Andy