gpt4 book ai didi

php - 使用外键插入表 - PHP PDO

转载 作者:行者123 更新时间:2023-11-29 19:09:46 24 4
gpt4 key购买 nike

我有一个名为“Profiles”的数据库。该数据库包含两个表,称为“用户”和“配置文件”:

用户:
user_id
姓名
电子邮件
密码

个人资料:
profile_id
名字
姓氏
总结

我正在使用 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, CONSTRAINT profile_ibfk_2 FOREIGN KEY (user_id) REFERENCES users (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。如有任何帮助,我们将不胜感激,谢谢。

最佳答案

profile_ibfk_2 是外键的名称。您尝试在 profile 表中添加一行,但您也没有设置 user_id。因此,更改您的 INSERT 语句:

$sql = "INSERT INTO profile (first_name, last_name, summary, user_id)
VALUES (:first_name, :last_name, :summary, :user_id)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':first_name' => $_POST['first_name'],
':last_name' => $_POST['last_name'],
':summary' => $_POST['summary'],
':user_id' => $whatEverToGetTheCurrentUserID,
));

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com