"Profiles"というデータベースが1つあります。外部キーを持つテーブルへのINSERT - PHP PDO
ユーザー:
user_idの
名
メール
パスワード
プロファイル: このデータベースには、 "ユーザー" と "プロファイル" と呼ばれる2つのテーブルが含まれ
FIRST_NAMEを説明profile_id
を
last_name
概要
私はPHPとPDOを使用してCRUDシナリオに取り組んでいます。現在、私は新しいプロファイルエントリを「追加」(作成)しようとしています。割り当てには、「現在ログインしているユーザーの外部キーuser_idでエントリにマークを付けるようにしてください(作成)」。
私はPDOで2つのテーブルを一緒に接続する方法を理解していません。 CONSTRAINT profile_ibfk_2
は何を意味し、また
Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
profiles
.profile
, CONSTRAINTprofile_ibfk_2
FOREIGN KEY (user_id
) REFERENCESusers
(user_id
) ON DELETE CASCADE ON UPDATE CASCADE) in /websites-mamp/asmt-profile/add.php:32 Stack trace: #0 /websites-mamp/asmt-profile/add.php(32): PDOStatement->execute(Array) #1 {main} thrown in /websites-mamp/asmt-profile/add.php on line 32
:私は次のエラーを取得していますか?
私のコードは次のとおりです。
コードで、私は、外部キーに接続しない<?php
session_start();
require_once "pdo.php";
// Validate field entries
if (isset($_POST['first_name']) && isset($_POST['last_name']) && isset($_POST['summary'])) {
$sql = "INSERT INTO profile (first_name, last_name, summary)
VALUES (:first_name, :last_name, :summary)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':first_name' => $_POST['first_name'],
':last_name' => $_POST['last_name'],
':summary' => $_POST['summary']
));
$_SESSION['success'] = "Record added";
header("Location: index.php");
return;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Add</title>
</head>
<body>
<div class="container">
<form method="post">
<p>First Name:
<input type="text" name="first_name" /></p>
<p>Last Name:
<input type="text" name="last_name" /></p>
<p>Summary:
<textarea type="text" name="summary"></textarea></p>
<input type="submit" value="Add">
<input type="submit" name="logout" value="Cancel">
</form>
</div>
</body>
</html>
?私はWHERE節を試しましたが、それは助けにはなりません。誰かがこれを簡単に説明できますか?私は類似の問題についてここでStackOverflowを調べてきましたが、そのほとんどは私の頭の上にあるか、PDOではありません。どんな助けもありがとう、ありがとう。
INSERTではwhere句を使用できません。これを修正するには、他のキーを追加するのと同じ方法で外部キーを追加します。 – Akintunde007
@MariaGosur私はあなたがストアドプロシージャを使用する必要があると思います。 – user3441151
@ user3441151 OPはなぜストアドプロシージャを使用する必要がありますか? –