0

テーブルに購入情報を追加する際に問題が発生しました。ショッピングカートを作成しました。チェックアウト時に購入ボタンがあります。先に進む前に、これが私のテーブルの構造です。

購入(表):

  • PurchaseID(主キー)
  • FrameNumber(外部キー)
  • 日にち
  • Eメール

BikeStock:

  • FrameNumber(主キー)
  • 購入ID(外部キー)-購入テーブルへのリンク。
  • BikeCode(外部キー)-自転車テーブルへのリンク。

誰かが購入テーブルをクリックしたときに、購入IDを入力し、FrameNumberをBikestockテーブルから取得します。Bikecode='購入したい自転車のコード'です。

私がこれまでに持っているのはこれです:

<?php
session_start();
include ("connection.php");

$sql = "SELECT b.FrameNumber, b.BikeCode, p.FrameNumber FROM BikeStock b LEFT JOIN Purchase p on b.FrameNumber = p.FrameNumber WHERE b.bikecode = 'MABE2012-5'";
$result = mysqli_query($con, $sql) or die('Query1 failed: ' . mysqli_error($con));

while($row = mysqli_fetch_array($result)) {
$framenumber = $row[0];

echo $framenumber . "<br>";

}
$PurchaseID = (rand(1,24));
$date = date("d/m/Y");
$Email = $_SESSION["user"];

$sql1 = "INSERT INTO Purchase VALUES (\"$date\",\"$PurchaseID\",\"$Email\", \"$framenumber\")";
$result1 = mysqli_query($con, $sql1) or die('Query2 failed: ' . mysqli_error($con));

    echo $date . "<br>";
    echo $PurchaseID . "<br>";
    echo $Email . "<br>";

?> 

$ Bikecode情報を追加する方法がわかりません。また、乱数を選択し、フレーム番号がコピーされ続けるため、主キーで重複したエントリを取得し続けますが、外部キーであるため、1つのフレーム番号を使用する場合は、別のフレーム番号を選択する必要があります。フレーム番号が足りなくなった場合は、在庫切れと言いたいです。

助けていただければ幸いです。不明な点がある場合は、どこにあるか教えてください。整理します。

4

1 に答える 1

1

いくつかの提案:

1) Purchase テーブルを変更して、自動インクリメントの主キーを含めます。乱数を使用しないでください。
2) この挿入を変更します。

購入値に挿入

より似たものに:

INSERT INTO Purchase ( PurchaseID, FrameNumber, ...) VALUES ?, ?, ...

準備済みステートメントを使用します。

3) YYYY-MM-DD のように書式設定すると、MySQL は日付に満足します。
4) ショッピング カートに追加する前に、「フレームの在庫がありません」を確認してください。

于 2012-12-09T13:23:35.317 に答える