簡體   English   中英

從一個表中選擇多個數據並使用PHP表單插入另一個表

[英]Selecting multiple data from a table and inserting into another table using PHP form

我創建了一個將數據提交到多個表的表單。 我的字段是名字,姓氏,電子郵件,城市/地區/國家/地區,它們都插入了3個不同的表(用戶,電子郵件,位置)中。

數據可以很好地輸入到“用戶”和“電子郵件”中,但是我對如何處理“位置”感到困惑。

我有3個單獨的位置表(城市,地區,國家/地區)。 我要執行的操作是將CityID,RegionID和CountryID插入到Location表中。 我已經設置了“城市/地區/國家/地區”字段,因此它會根據以下城市自動完成:

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

我的城市表具有所有必要的信息(CityID,RegionID,CountryID)。 如何從“城市”表中提取數據並將其插入到“位置”表中?

這是我的代碼的一部分。 我對PHP和MySQL還是很陌生,所以我為此感到很抱歉。 代碼的第一部分有效,但是第二部分無效(將數據插入到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 ...”,但我不知道我的狀況會如何。

該條件取決於您。 如果要從輸入框中獲取值,則似乎需要找出從輸入字段讀取位置的最佳方法。 照原樣,您可能想要首先將輸入分成一個數組:

$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 Joins獲取位置。 您的加入加上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/zh/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變量,等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM