我有一個名爲「Profiles」的數據庫。 這個數據庫包含兩個表名爲 「用戶」 和 「簡介」:用外鍵插入表 - PHP PDO
用戶:
USER_ID
名
電子郵件
密碼
概況:
PROFILE_ID
FIRST_NAME
姓氏
摘要
我正在使用PHP和PDO的CRUD場景。目前,我正在嘗試「添加」(創建)一個新的配置文件條目。分配狀態爲:「確保使用當前登錄用戶的外鍵user_id標記該條目(創建)」。
我不明白如何在PDO中將兩個表連接在一起。我收到以下錯誤:
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
另外,CONSTRAINT profile_ibfk_2
是什麼意思?
我的代碼是:
<?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必須使用存儲過程? –