从表中选择多个数据并使用PHP表单插入另一个表

时间:2013-03-15 16:21:03

标签: php mysql database select insert

我创建了一个将数据提交到多个表的表单。我的字段是名字,姓氏,电子邮件,城市/地区/国家,它们全部插入3个不同的表格(用户,电子邮件,位置)。

数据进入用户和电子邮件就好了,但我对如何处理位置感到困惑。

我有3个单独的位置表(城市,地区,国家/地区)。我想要做的是将CityID,RegionID和CountryID插入Location表。我设置了城市/地区/国家/地区字段,因此它会根据城市自动完成,如下所示:

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

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 ...”,但我不知道我的情况会是什么。

1 个答案:

答案 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变量等等......