不确定如何描述我的问题,但试试..
我正在开发一个小新闻门户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的新手.. 感谢您阅读...等待回复..
答案 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');"