1

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

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

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

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

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

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 回答