-1

我正在尝试使用以下脚本将从隐藏表单中获取的值插入到数据库中

 /detect user session
 if (!isset($_SESSION['user']))
 {
//if no session take to login page
header('location:login_main.php');
 }

 //if session detected connect to database using pdo
 $db = getConnection();

 //get holiday infor from hidden form
$user = $_SESSION['user'];
$title = $_POST['title'];
$link = $_POST['link'];
$date = $_POST['date'];
$description = $_POST['description'];

 //insert the values in to favorties table
 $sql = "INSERT INTO saved_holidays (subscriberID, link, pubDate, title, description, dateSaved) 
VALUES (:subscriberID, :link, :pubDate, :title, :description, now())";

$stmt = $db->prepare($sql);
$stmt->bindParam(':subscriberID', $user);
$stmt->bindParam(':link', $link);
$stmt->bindParam(':pubDate',$date);
$stmt->bindParam(':title', $title);
$stmt->bindParam(':description', $description);
$stmt->execute();

echo 'you have sucessfully saved the holiday offer.<meta http-equiv="refresh" content="2; url=index.php" />';

但是,当我运行脚本时,出现以下错误

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     (`unn_w11023553/saved_holidays`, CONSTRAINT `holidays_ibfk_1` FOREIGN KEY (`subscriberID`)     REFERENCES `subscriber` (`email`) ON UPDATE CASCADE)' in [OMISSIS]

谁能告诉我做错了什么,谢谢

4

2 回答 2

1

这可能不是 PHP 问题:也许您只是违反了外键约束。如果您不了解外键约束,请立即停止编写您的应用程序,并通读我链接的 Wikipedia 文章。

一些问题:

  • 您是自己设计数据库,还是只是在使用它?你能告诉我们CREATE TABLE你要插入东西的表的语句吗?
  • 您是否通过-ing检查$user变量是否设置正确?echo
  • 您是否尝试通过硬编码$title$link$date$description值来执行准备好的语句?

题外话:你的脚本中有一个巨大的安全漏洞。header("Location: ...") 不会退出脚本的执行

于 2012-05-02T15:48:32.933 回答
1

似乎您subscriberIDsaved_holidays表中的字段引用了emailsubscriber表中的字段。

你能给我们展示一些数据样本吗?

我猜您没有在该subscriberID字段中插入现有订阅者的电子邮件。

于 2012-05-02T15:50:50.913 回答