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 によって与えられます それはおそらく重要です...