Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以为MySql表值指定字符串吗?_Php_Mysql_Phpmyadmin - Fatal编程技术网

Php 我可以为MySql表值指定字符串吗?

Php 我可以为MySql表值指定字符串吗?,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我有一个MySql表,用于存储州和城市列表中的用户状态和城市。我特别将每个州编码为两个字母的缩写版本,如华盛顿州的华盛顿州和加利福尼亚州的加利福尼亚州,每个城市都有两个字母的缩写,城市名称的格式如下:科罗拉多州的博尔德将是博尔德市和盐湖城的合称,犹他州将是UT盐湖城,以避免不同的州使用相同的城市名称。PHP在city列下插入值UT salt lake city,但是当我通过PHP调用变量时,它显示如下:您的位置是:犹他州UT salt lake city。 为了解决这个问题,我列出了一系列变量

我有一个MySql表,用于存储州和城市列表中的用户状态和城市。我特别将每个州编码为两个字母的缩写版本,如华盛顿州的华盛顿州和加利福尼亚州的加利福尼亚州,每个城市都有两个字母的缩写,城市名称的格式如下:科罗拉多州的博尔德将是博尔德市和盐湖城的合称,犹他州将是UT盐湖城,以避免不同的州使用相同的城市名称。PHP在city列下插入值UT salt lake city,但是当我通过PHP调用变量时,它显示如下:您的位置是:犹他州UT salt lake city。 为了解决这个问题,我列出了一系列变量

    if ($city == "AL-auburn") { $city = "Auburn"; }
    else if ($city == "AL-birmingham") { $city = "Birmingham"; }
    else if ($city == "GA-columbus") { $city = "Columbus"; $state = "Georgia"; }
    else if ($city == "AL-dothan") { $city = "Dothan"; }
    else if ($city == "AL-florence") { $city = "Forence"; }
    else if ($city == "AL-muscle-shoals") { $city = "Muscle Shoals"; }
    else if ($city == "AL-gadsden-anniston") { $city = "Gadsden Anniston"; }
    else if ($city == "AL-huntsville") { $city = "Huntsville"; }
    else if ($city == "AL-decatur") { $city = "Decatur"; }
    else if ($city == "AL-mobile") { $city = "Mobile"; }
    else if ($city == "AL-montgomery") { $city = "Montgomery"; }
    else if ($city == "AL-tuscaloosa") { $city = "Tuscaloosa"; }

有没有办法缩短这个过程,或者至少从一个单独的文件中调用它,这样我就不必在每次调用位置时都复制/粘贴它了?

这样的方法怎么样

$name = 'UL-salt-lake-city';
ucwords(str_replace("-"," ",substr($name, 3)));

皈依盐湖城

像这样的怎么样

$name = 'UL-salt-lake-city';
ucwords(str_replace("-"," ",substr($name, 3)));

转换为盐湖城

如果需要与代码不直接对应的名称,可以使用关联数组:

$city_names = array(
    'CO-boulder' => 'Boulder, Colorado',
    'GA-columbus' => 'Columbus, Georgia',
    // ...
);
$name = $city_names[$city];

如果需要具有与其代码不直接对应的名称,可以使用关联数组:

$city_names = array(
    'CO-boulder' => 'Boulder, Colorado',
    'GA-columbus' => 'Columbus, Georgia',
    // ...
);
$name = $city_names[$city];

这里需要一个hashmap,您可以在PHP中以数组的形式进行:

$cities = array(
    "AL-auburn"     => array("Auburn"),
    "AL-birmingham" => array("Birmingham"),
    "GA-columbus"   => array("Columbus", "Georgia"),
    ...
);

if (isset($cities[$city])) {
    list($city, $state) = $cities[$city] + array(null, null);
}
然后还可以存储城市阵列

或者,您可以利用现有信息:

list($state, $city) = explode('-', $city, 2);

$city = ucwords(strtr($city, '-', ' '));
然后,您可以使用哈希映射将状态2字母代码再次映射到它们的长名称:

$states = array(
    'AL' => 'Alabama',
    'GA' => 'Georgia',
    ...
);

if (isset($states[$state])) {
    $state = $states[$state];
}

这里需要一个hashmap,您可以在PHP中以数组的形式进行:

$cities = array(
    "AL-auburn"     => array("Auburn"),
    "AL-birmingham" => array("Birmingham"),
    "GA-columbus"   => array("Columbus", "Georgia"),
    ...
);

if (isset($cities[$city])) {
    list($city, $state) = $cities[$city] + array(null, null);
}
然后还可以存储城市阵列

或者,您可以利用现有信息:

list($state, $city) = explode('-', $city, 2);

$city = ucwords(strtr($city, '-', ' '));
然后,您可以使用哈希映射将状态2字母代码再次映射到它们的长名称:

$states = array(
    'AL' => 'Alabama',
    'GA' => 'Georgia',
    ...
);

if (isset($states[$state])) {
    $state = $states[$state];
}

只需去掉刺上的三个字符就可以了吗?如果是,则使用substr$city=substr$city,3;为什么不将正确的城市名称也存储到数据库中?我必须在表中创建一个新的and字段。。。但在我做了这些之后,时间会更短!只需去掉刺上的三个字符就可以了吗?如果是,则使用substr$city=substr$city,3;为什么不将正确的城市名称也存储到数据库中?我必须在表中创建一个新的and字段。。。但在我做了这些之后,时间会更短!谢谢你的快速回复。它立即起作用,甚至第一个字母都大写了,我不知道这是不是CSS。写下美国每个城市的if声明要容易得多。只需将第二行更改为$name=ucwords。。。。可能是因为我是PHP开发新手,我有一段时间没有得到这一点。资本化来自PHPAPI中的函数。您会注意到字符串中的任何单词都将首字母大写。感谢您的快速回复。它立即起作用,甚至第一个字母都大写了,我不知道这是不是CSS。写下美国每个城市的if声明要容易得多。只需将第二行更改为$name=ucwords。。。。可能是因为我是PHP开发新手,我有一段时间没有得到这一点。资本化来自PHPAPI中的函数。你会注意到字符串中的任何单词的首字母都会大写。我认为如果我没有为state指定单独的字段,这个想法会很好。。。我应该把这个放在我的问题里。但是如果是这样的话,我可能会使用这个答案。@afterimagedesign:问题的第二部分是一个变体。自由地获得灵感。我只是想展示这些关联数组是如何工作的,这样你就可以保护这些庞大的if集合,这些if集合既繁重又不必要。我认为如果我还没有一个单独的状态字段,这个想法会很好。。。我应该把这个放在我的问题里。但是如果是这样的话,我可能会使用这个答案。@afterimagedesign:问题的第二部分是一个变体。自由地获得灵感。我只是想展示一下这些关联数组是如何工作的,这样您就可以保护这些庞大的if集合,它们既繁重又不必要。