0

PHPを使用してデータベースにデータを挿入しようとすると、クエリをエコーアウトすると、挿入できるクエリがエコーされます(PHPMyadminを使用してデータを直接挿入しても問題ありません)。しかし、それでもphpを使用するといくつかのエラーが発生したため、DB上のリレーションを削除して再試行したところ、何が問題なのかがわかりましたが、何が原因なのかわかりません。

問題

私のコード:

echo "<b>mysql_query(\"INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento, envio_id, pagamento_id, total,obs) VALUES('$cliente_id','$data_e','$data_v', '$envio_id', '$pagamento_id','$total','$obs')\");</b>";

    mysql_query("INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento, envio_id, pagamento_id, total,obs) VALUES('$cliente_id','$data_e','$data_v', '$envio_id', 'pagamento_id','$total','$obs')") or die(mysql_error());

私のエコー:

"mysql_query("INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento,envio_id, pagamento_id, total,obs) VALUES('1','2012-12-03 11:13:08','2013-01-03 11:13 :08', '1', '1','2400','Observações')");"

私が挿入されるもの:

+++++++++++++++
+EncomendaCab +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|utilizador_id |   data_encomenda  |  data_vencimento  | envio_id | pagamento_id | total | obs |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|      1       |2012-12-03 11:13:08|2013-01-03 11:13:08|    1     |       1      |  2400 |Observações|
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

これは e コマース サイト用で、注文を受けて支払いを受けるか、Paypal を介して、または郵便サービスを介して、または実店舗で直接、ポルトガル語のフィールドなので、以下に翻訳して説明します(単純なものもあれば、それほど簡単ではないものもあります):

utilizador_id:( int ) これはユーザー ID で、users テーブルのキーです。

data_encomenda (order_date)( datetime ): これは、クライアント (ユーザー) が注文を確認するフォームを送信した時点の日時です。

data_vencimento( datetime ): これは期日と同等で、「私のクライアント」からのリクエストです。

Environment_id( int ): これは、店舗のクライアントが選択できる種類の出荷です (彼は自宅に送るように依頼するか、物理的な店舗で商品を選ぶことができます);

pagamento_id( int ): これは、クライアントが選択できる支払いの王様 (paypal、小切手、郵便サービスなど) を格納するテーブルであり、エコーされたクエリで 1 またはその他の番号をエコーする問題がある場所です。フォーム内の select 要素 (ウィッチはデータベースから値を取得しています) ですが、データベースに送信するときに 0 に置き換えられ、「外部キー制約が失敗しました」というエラーが発生しました。理由がわかりません...

total(float): バックエンドに表示する注文の合計を格納します。

obs( varchar(500) ): これは、人々が何かを尋ねることができる観測フィールドです (「ボックスにユニコーンを描く」など)。

お時間をいただきありがとうございます...

編集:

データ型を忘れましたが、すでに追加しています...

エラーメッセージは外部キー制約が失敗したことでしたが、テーブル pagamento のリレーションを削除しました。これは、挿入されたデータが無効であることを意味します(AFAIK)。 mysql_query() が実行されると、その変数が「破損」し、場所や理由がわかりません...

フォームから $_POST によって与えられます それはおそらく重要です...

4

1 に答える 1

2
mysql_query("INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento, envio_id, pagamento_id, total,obs) VALUES('$cliente_id','$data_e','$data_v', '$envio_id', 'pagamento_id','$total','$obs')") or die(mysql_error());

pagamento_id は php 変数ではないため問題です。

mysql_query("INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento, envio_id, pagamento_id, total,obs) VALUES('$cliente_id','$data_e','$data_v', '$envio_id', '$pagamento_id','$total','$obs')") or die(mysql_error());
于 2012-12-03T12:01:13.123 に答える