[英]Selecting multiple data from a table and inserting into another table using PHP form
我創建了一個將數據提交到多個表的表單。 我的字段是名字,姓氏,電子郵件,城市/地區/國家/地區,它們都插入了3個不同的表(用戶,電子郵件,位置)中。
數據可以很好地輸入到“用戶”和“電子郵件”中,但是我對如何處理“位置”感到困惑。
我有3個單獨的位置表(城市,地區,國家/地區)。 我要執行的操作是將CityID,RegionID和CountryID插入到Location表中。 我已經設置了“城市/地區/國家/地區”字段,因此它會根據以下城市自動完成:
我的城市表具有所有必要的信息(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.