MySql,将数据插入另一个表行的表行(此行刚刚创建)

时间:2012-06-03 08:06:17

标签: php mysql insert

不确定如何描述我的问题,但试试..

我正在开发一个小新闻门户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_前缀用于new,ni_是news_image的前缀)

新闻表将保存新闻报道,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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您是否尝试过获取上次插入新闻的ID?像:

$lastItemID = mysql_insert_id();

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

INSERT INTO news_image
SET
n_id= '$lastItemID',
ni_name = '$name',
ni_caption  = '$caption'

答案 2 :(得分:0)

这取决于您访问MySQL的PHP​​扩展 - 它们都具有insert_id()类型函数,以从当前连接获取最后一个自动递增的数字。

特别是,PDO有lastInsertId(),MySQLi有mysqli_insert_id()。您不应该使用古老的MySQL扩展,因为它已不再维护,社区已经开始deprecation process

答案 3 :(得分:0)

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

尝试在数据库中拍摄:

$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');"