对,非常新sql
,我正在尝试在我的项目表中为现有帐户执行插入语句,但它一直失败。我看不出我哪里错了。php
pdo
这是结构
帐户表
id = pk
项目表
id = pk
account_id = fk
project_name = varchar(100)
pm = varchar(100)
apm = varchar(100)
est_start = date
est_end = date
contact = varchar(100)
project_status = varchar(100)
comments= text
所有相关字段都是 utf8_unicode_ci 排序规则
限制设置为mySQL
XAMPP 服务器上的 innodb db 级联。
php/pdo
<?php
include "$_SERVER[DOCUMENT_ROOT]/core/init.php";
if (empty($_POST) === false) {
$fk = '';
$title = $_POST['title'];
try {
$query_get_id = $db->prepare("
SELECT accounts.id
FROM accounts
WHERE accounts.account_name = ?
");
$query_get_id->bindValue(1, $title, PDO::PARAM_STR);
$query_get_id->execute();
$count = $query_get_id->rowCount();
if ($count > 0) {
while ($row = $query_get_id->fetch(PDO::FETCH_ASSOC)) {
$fk = $row['id'];
}
}
} catch(PDOException $e) {
die($e->getMessage());
}
$pn = $_POST['project_name'];
$ppm = $_POST['project_pm'];
$papm = $_POST['project_apm'];
$pc = $_POST['project_contact'];
$pes = $_POST['project_est_start'];
$pee = $_POST['project_est_end'];
$ps = $_POST['project_status'];
$pcom = $_POST['project_comments'];
try {
$query_ip = $db->prepare('INSERT INTO projects (account_id, project_name, pm, apm, est_start, est_end, contact, project_status, comments) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)');
$query_ip->bindValue(1, $fk, PDO::PARAM_STR);
$query_ip->bindValue(2, $pn, PDO::PARAM_STR);
$query_ip->bindValue(3, $ppm, PDO::PARAM_STR);
$query_ip->bindValue(4, $papm, PDO::PARAM_STR);
$query_ip->bindValue(5, $pes, PDO::PARAM_STR);
$query_ip->bindValue(6, $pee, PDO::PARAM_STR);
$query_ip->bindValue(7, $pc, PDO::PARAM_STR);
$query_ip->bindValue(8, $ps, PDO::PARAM_STR);
$query_ip->bindValue(9, $pcom, PDO::PARAM_STR);
$query_ip->execute();
echo 'Project Created';
} catch(PDOException $e) {
die($e->getMessage());
}
} else {
echo 'project creation failed';
}
?>
这不会吐出任何错误,但我感觉我没有正确设置 fk,因此 db insert 失败。
如果您需要更多信息,请询问,即使有所有代码/信息,我也会尽量保持简短和甜蜜。任何帮助表示赞赏。
编辑
更新代码后,我现在发现了这个错误
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`fsi`.`projects`, CONSTRAINT `projects_ibfk_1` FOREIGN KEY (`id`) REFERENCES `accounts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)' in C:\xampp\htdocs\include\fill_project.php:50 Stack trace: #0 C:\xampp\htdocs\include\fill_project.php(50): PDOStatement->execute() #1 {main} thrown in C:\xampp\htdocs\include\fill_project.php on line 50
第 50 行是使用此代码执行语句的位置
$query_ip->execute();
我太新了,无法完全理解这个错误。我的猜测是我的第一个怀疑是正确的,我没有正确设置我的 fk。我对吗?
同样仅供参考,我在插入之前回显了我的变量,它们都已设置,如果有人想知道,它们都不是空的。