0

不知道如何描述我的问题,但让我们试试..

我正在开发一个小型新闻门户 php + mysql 项目我在 mysql 数据库中有两个表。

1: news (
   n_id (primary key)
   n_title
   n_text
)

2: news_image (
   ni_id (primary key)
   n_id  (foreign key from news table)
   ni_name
   ni_caption
)

(n_ 前缀是新的,ni_ 是 news_image 的前缀)

news 表将保存新闻故事,而 news_image 表将存储新闻图像的名称和标题。新闻图像的单独表格是因为在后期,我将为每个故事添加多个图像。该脚本工作正常(因为我已经通过 phpmyadmin 在数据库中输入数据对其进行了测试。

问题: 我创建了一个 php 脚本来将数据添加到新闻表并将图像上传到文件系统。它工作正常。我使用此查询将行添加到新闻表

INSERT INTO news
SET
n_title = '$title',
n_text = '$text'

n_id 是主键(整数并且是 AUTO_INCREMENT).. 这工作正常,但我想要一个查询将在上述查询执行后立即执行,并将自动在 news_image 表中插入一个新行,取刚刚的行的 n_id已插入新闻表中。news_image 表中的 ni_name 和 ni_capption 不是问题,我可以很容易地得到它,但是从新插入行的新闻表中获取 n_id 是问题......我怎样才能得到 n_id......??????请提供详细的答案,因为我是 php + mysql 的新手。感谢您的阅读...等待回复..

4

4 回答 4

1

您可以使用mysql_insert_id();函数来获取最后插入的 id。运行插入查询后,使用此行获取 id $id = mysql_insert_id();,您将在 $id; 中获得 id;

于 2012-06-03T08:13:52.427 回答
1

您是否尝试过获取最后插入的新闻项目的 ID?像:

$lastItemID = mysql_insert_id();

然后您可以使用它来创建图像的条目:

INSERT INTO news_image
SET
n_id= '$lastItemID',
ni_name = '$name',
ni_caption  = '$caption'
于 2012-06-03T08:24:12.483 回答
0

这取决于您访问 MySQL 所通过的 PHP 扩展——它们都有insert_id()类型函数来从当前连接中获取最后一个自动递增的数字。

特别是,使用 PDO 有lastInsertId(),使用 MySQLi 有mysqli_insert_id(). 你不应该使用古老的 MySQL 扩展,因为它不再被维护并且社区已经开始了弃用过程

于 2012-06-03T08:09:44.907 回答
0

您可以使用一个查询字符串直接在 SQL 中解决它(几分钟前我遇到了一些问题 :))。

尝试在数据库中拍摄 THIS:

$sql = "INSERT INTO `news`(`n_txt`) VALUES ('Peace in Ukraine'); 
INSERT INTO `news_image`(`n_id`,`ne_name`) VALUES (LAST_INSERT_ID(),'smiling_merkel.jpg');"
于 2015-02-02T18:22:38.173 回答