0

私の問題を説明する方法がわかりませんが、試してみましょう..

私は小さなニュース ポータル php + mysql プロジェクトに取り組んでいます。mysql データベースに 2 つのテーブルがあります。

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 テーブルにはニュース記事が保持され、news_image テーブルにはニュースの画像の名前とキャプションが格納されます。ニュース画像の別の表は、後の段階で、各記事に複数の画像を追加するためです。スクリプトは正常に動作します (phpmyadmin を介してデータベースにデータを入力してテストしたため)。

問題: データをニュース テーブルに追加し、画像をファイル システムにアップロードするための php スクリプトを作成しました。それは正常に動作します。このクエリを使用して、ニューステーブルに行を追加しました

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

n_id は主キーです (整数で AUTO_INCREMENT です)。ニュース表に掲載されました。news_image テーブルの ni_name と ni_capption は問題ありません。簡単に取得できますが、新しく挿入された行のニュース テーブルから n_id を取得するのが問題です... n_id を取得するにはどうすればよいですか...????? 私はphp + mysqlの初心者なので、詳細な回答を提供してください..読んでくれてありがとう...返信を待っています..

4

4 に答える 4

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 に答える
1

関数を使用mysql_insert_id();して、最後に挿入された ID を取得できます。挿入クエリを実行した直後に、この行を使用して ID を取得$id = mysql_insert_id();すると、ID が $id; に含まれます。

于 2012-06-03T08:13:52.427 に答える
0

1つのクエリ文字列を使用して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');"
于 2015-02-02T18:22:38.173 に答える
0

それは、MySQL にアクセスしている PHP 拡張機能によって異なります。それらはすべてinsert_id()、現在の接続から最後に自動インクリメントされた数値を取得するための型関数を持っています。

特に、PDO には がlastInsertId()あり、MySQLi には がありmysqli_insert_id()ます。古い MySQL 拡張機能は使用しないでください。これはもはや維持されておらず、コミュニティが非推奨プロセスを開始しているためです。

于 2012-06-03T08:09:44.907 に答える