我创建了一个将数据提交到多个表的表单。我的字段是名字,姓氏,电子邮件,城市/地区/国家,它们全部插入3个不同的表格(用户,电子邮件,位置)。
数据进入用户和电子邮件就好了,但我对如何处理位置感到困惑。
我有3个单独的位置表(城市,地区,国家/地区)。我想要做的是将CityID,RegionID和CountryID插入Location表。我设置了城市/地区/国家/地区字段,因此它会根据城市自动完成,如下所示:
My Cities表包含所有必要信息(CityID,RegionID,CountryID)。如何从Cities表中提取数据并将其插入到Location表中?
这是我的代码的一部分。我对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 ...”,但我不知道我的情况会是什么。
答案 0 :(得分: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变量等等......