1

複数のテーブルにデータを送信するフォームを作成しました。私のフィールドは、名、姓、電子メール、都市/地域/国であり、それらはすべて 3 つの異なるテーブル (ユーザー、電子メール、場所) に挿入されます。

データはユーザーと電子メールに問題なく入りますが、場所をどうするかについて混乱しています。

場所 (都市、地域、国) 用に 3 つの個別のテーブルがあります。ここでやりたいことは、CityID、RegionID、および CountryID を Location テーブルに挿入することです。City/Region/Country フィールドを設定して、次のように都市に基づいてオートコンプリートします。

http://i.stack.imgur.com/CYvJG.png

My Cities テーブルには、必要な情報 (CityID、RegionID、CountryID) がすべて含まれています。そのデータを Cities テーブルから取得して、Location テーブルに挿入するにはどうすればよいですか?

これが私のコードの一部です。私はPHPとMySQLに非常に慣れていないので、これがずさんで申し訳ありません。コードの最初の部分は機能しますが、2 番目の部分は機能しません (Location テーブルへのデータの挿入)。

//Insert static values into people table
$sql_user = sprintf("INSERT INTO User (FirstName, LastName,) VALUES ('%s','%s')",
                    mysql_real_escape_string($_POST['FirstName']),
                    mysql_real_escape_string($_POST['LastName']),
$result_user = $db->query($sql_user);

//get last inserted userid
    $inserted_user_id = $db->last_insert_id();

//Insert values into location table
$sql_city = sprintf("INSERT INTO Location (UserID, CityID, RegionID, CountryID) 
VALUES ('$inserted_user_id',(SELECT CityID, RegionID, CountryID, FROM Cities))");
$result_city = $db->query($sql_city);

FROM Cities の後に "WHERE..." が必要かもしれませんが、自分の条件がどうなるかわかりません。

4

1 に答える 1

0

その条件はあなた次第です。入力ボックスから値を取得している場合、入力フィールドから場所を読み取る最良の方法を見つける必要があるようです。このままでは、最初に入力を配列に分割することをお勧めします。

$location = explode(',',$_POST['location'])
$city = $location[0];
$region = $location[1];
$country = $location[2];

今あなたのクエリで -

"...WHERE city_name = '{$city}' AND region_name = '{$region_name}' AND country_name = '{$country}'";

*編集

詳細については、SQL 結合を使用して場所を取得する別のクエリをセットアップする必要があります。結合を WHERE 制約と組み合わせると、探している都市が返されます。だからここに:

"SELECT Cities.CityID,Cities.RegionID,Cities.CountryID FROM Cities JOIN (Regions,Countries) ON Cities.RegionID = Regions.RegionID AND Cities.CountryID = Countries.CountryID WHERE Cities.CityName = '{city}' AND Regions.RegionName = '{$region}' AND Countries.CountryName = '{$country}' LIMIT 1"

**アップデート

これは、MySQL の PHP マニュアルを参照することで取得できる非常に基本的なものです。 http://php.net/manual/en/function.mysql-query.php

あなたは新しいので、パスを許可します。

このクエリを実行した後:

$location_result = mysql_query("SELECT Cities.CityID,Cities.RegionID,Cities.CountryID FROM Cities JOIN (Regions,Countries) ON Cities.RegionID = Regions.RegionID AND Cities.CountryID = Countries.CountryID WHERE Cities.CityName = '{$city}' AND Regions.RegionName = '{$region}' AND Countries.CountryName = '{$country}' LIMIT 1"); 

結果にアクセスする必要があります。そう:

while ($row = mysql_fetch_assoc($location_result)) {
   $cityID =  $location_result['CityID'];
   //etc... for each associative column
}

次に、挿入クエリで、CityID 列などに $cityID 変数を挿入します...

于 2013-03-15T16:36:01.523 に答える