2

セッションを使用して、後で複数のテーブルのデータベースに保存する、単純な複数ページのフォームを設定しようとしています。

しかし、私は問題に遭遇したようです。最後のページの値はデータベースにポストされますが、セッション変数はポストされません。

心に留めておいてください..私と私のプロジェクト パートナーは php/sql の完全な初心者であり、クラスで十分な注意を払っていない可能性があります。ほとんどのコードはランダムにまとめられています。問題を特定することは、私たちの得意分野ではないようです。

最初のページ / b_tickets.php (「ticket_a」、「ticket_k」、および「ticket_vip」という値を持つ単純な html フォーム)

2 ページ目 / b_rooms.php

    <?php
session_start();

$_SESSION['ticket_a'] = $_POST['ticket_a'];
$_SESSION['ticket_k'] = $_POST['ticket_k'];
$_SESSION['ticket_vip'] = $_POST['ticket_vip'];
?>

3 ページ目 / b_ucp.php

<?php
session_start();

$_SESSION['room_s'] = $_POST['room_s'];
$_SESSION['room_s_extra'] = $_POST['room_s_extra'];
$_SESSION['room_d'] = $_POST['room_d'];
$_SESSION['room_d_extra'] = $_POST['room_d_extra'];
$_SESSION['room_3'] = $_POST['room_3'];
$_SESSION['room_3_extra'] = $_POST['room_3_extra'];
$_SESSION['room_10'] = $_POST['room_10'];
$_SESSION['room_10_extra'] = $_POST['room_10_extra'];
$_SESSION['pension'] = $_POST['pension'];
?>

につながる

insert_ucp.php

(この時点で、前の変数のエコー §_SESSION により、それらが実際にはまだ格納されていることがわかります。)

<?php
session_start();

$con = mysql_connect("localhost","XX","XX");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("fatcity", $con);



$sql="INSERT INTO tickets (ticket_a, ticket_k, ticket_vip)
VALUES
('$_SESSION[ticket_a]','$_SESSION[ticket_k]','$_SESSION[ticket_vip]')";

$sql="INSERT INTO rooms (room_s, room_s_extra, room_d, room_d_extra, room_3, room_3_extra, room_10, room_10_extra, pension)
VALUES
('$_SESSION[room_s]','$_SESSION[room_s_extra]','$_SESSION[room_d]','$_SESSION[room_d_extra]','$_SESSION[room_3]','$_SESSION[room_3_extra]','$_SESSION[room_10]','$_SESSION[room_10_extra]','$_SESSION[pension]')";


$sql="INSERT INTO ucp (title, name, n_family, adress, a_housenumber, continent, country, province, region, city, telephone, email, password,  payment, client, comment)
VALUES
('$_POST[title]','$_POST[name]','$_POST[n_family]','$_POST[adress]','$_POST[a_housenumber]','$_POST[continent]','$_POST[country]','$_POST[province]','$_POST[region]','$_POST[city]','$_POST[telephone]','$_POST[email]','$_POST[password]','$_POST[payment]','$_POST[client]','$_POST[comment]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);
?>

この時点で、問題は実際には、php/sql に関して私たちがどれほどひどいものであるかということではありません-ありがとう..私たちはすでにそれを理解しています。締め切りまであと3日しかない..

しかし、セッション変数がデータベースに保存されないのはなぜですか。私たちは正確に何を見落としていますか?

事前にどうもありがとうございました..

4

3 に答える 3

1

毎回クエリを実行!!!

変数を作成し、実行するよりも2回上書きします

次のようにする必要があります。

$sql = 'smth';
mysql_query($sql);
$sql = 'smth';
mysql_query($sql);
$sql = 'smth';
mysql_query($sql);

あなたが持っている

$sql = 'smth';
$sql = 'smth';
$sql = 'smth';
mysql_query($sql);

そして、私が言ったように、mysql_* を使用しないでください。そして、あなたのコードはSQLインジェクションを許可します

于 2012-11-23T23:36:20.510 に答える
0

クエリの1つだけが実行されるという点で、E_pに同意します。彼が提案したことを実行すると、すべてのクエリを実行できるようになります。

また、クエリ構造を見るだけでテーブルを確認することもできますが、テーブルに問題はありませんが、必要な情報を取り戻すのに苦労する可能性があります。あなたがテーブル構造を投稿しておらず、これに関する質問もなかったので、私は間違っている可能性がありますが、それは私が気づき、共有したいと思ったものです。テーブルは、外部キーによって相互に接続されているようには見えません。これはプロジェクトでは必要ない場合がありますが、すべてのticket_aエントリに関連するすべてのフォームデータをプルする必要がある場合は、「rooms」または「upc」からの情報なしで、ticket_a列に対応するsessionIDのリストのみを取得します。 'テーブル。それがあなたが望んでいることであるならば、それはそれでいいです、さもなければあなたはそれを調べたいかもしれません。

于 2012-11-24T00:40:14.443 に答える