2

人材募集サイトを作成していますが、前のページで作成したレコードに新しいデータを追加するのに問題があります。

使いやすくするために、フォームをいくつかのステップに分割しました (各ステップは新しいページにあります)。ステップ 1 では、候補者データベース テーブルにレコードを作成し、候補者の個人情報 (名前、姓、連絡先の詳細、性別など)、次のページ (ステップ 2) にユーザーを送信します。このページでは、プロフィール写真をアップロードでき、画像へのパスが新しく作成されたレコードのフィールドに挿入されます。

問題は、関連するレコードのレコード ID を呼び出すコードを取得できないように見えることです。mysql_insert_id を使用することを考えましたが、それには 2 つの問題があります。まず、これを正しく使用する方法を知っているかどうかはわかりません。これについて複数の Google 検索を行っても、賢明ではありませんでした。第 2 に、会社は全国に複数の支店を持つため、2 人のユーザーが同時に候補者を追加し、ユーザー A がユーザー B が作成したレコードに写真を追加する可能性があります。

$_POST を使用してレコード ID を取得しようとしましたが、データがテーブルに挿入されると、データが次のページに渡されないようです。

私はPHPを初めて使用するわけではありませんが、以前はこの種のことを処理する友人がいたため、これは以前に行ったことではありませんが、残念ながら数か月前に亡くなったため、方法を学ぶ必要がありますこれは私が進むにつれ、ほとんど成功しませんでした。

私は少し途方に暮れているので、私の問題について十分に明確であることを願っています.

どんな援助でも大歓迎です。

4

3 に答える 3

1

phpPDOを使用したほうがよいでしょう。その中に、挿入された行のIDを取得する関数があります(http://us3.php.net/manual/en/pdo.lastinsertid.php)。挿入コードを実行するときは、その直後に実行すると、挿入したばかりの行のIDが表示されます。ここで、そのIDをユーザーまたはセッション変数(またはユーザー固有のその他のもの)のリンクに添付すると、各ユーザーが編集できる最後の行を簡単に追跡できるようになります。

于 2012-06-24T01:55:57.537 に答える
0

まず、非推奨のmysql_ *拡張機能の代わりにPDO(またはmysqli)を使用します。

PDOを使用すると、ステートメントを実行した後、2つの関数を使用して必要なIDを取得できます。

$stmt->execute($values);     // $stmt contains the prepared statement

$return_code = $stmt->rowCount();
// $return_code = 1 : new record
// $return_code = 2 : updated record

if ($return_code == 1)
{
    $ID_YOU_NEED = $db->lastInsertId();    // $db is the database connection
}

ちなみに、rowCount()私は通常ON DUPLICATE KEY UPDATE、ほとんどの挿入クエリで使用するため、その手順をスキップできます。

次に、IDをセッションに保存するか、次のフォームの非表示フィールドとして追加します。

ちなみに、要件によっては、必要な情報がすべて揃うまで、まだデータベースに何も保存しません。

于 2012-06-24T01:57:30.497 に答える
0

初め、

レコードをデータベースに挿入するページで、新しく作成されたレコードのIDを取得する必要があります。mysqli::insert-idを使用します。他の方法もあります。

2番、

レコードIDをユーザーのセッションに保存し、後続のページでレコードを更新するために使用します。セキュリティ上の理由から、URL GET値や「非表示」フィールドとしてではなく、セッションにIDを保存することが重要です。

于 2012-06-24T01:59:36.567 に答える