Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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),在Mysql中存储值_Php_Mysql - Fatal编程技术网

(下拉列表,Php和Mysql),在Mysql中存储值

(下拉列表,Php和Mysql),在Mysql中存储值,php,mysql,Php,Mysql,我想在MySQL数据库中存储城市的名称而不是ID。用于构建城市列表的PHP函数如下所示: public function getCity() { if(isset($this->attiva)) { $base = mysql_connect ('localhost', 'bolmdb', 'bolmdb'); mysql_select_db ('bolmdb', $base);

我想在MySQL数据库中存储城市的名称而不是ID。用于构建城市列表的PHP函数如下所示:

public function getCity() {
    if(isset($this->attiva)) {
        $base = mysql_connect ('localhost', 'bolmdb', 'bolmdb');
        mysql_select_db ('bolmdb', $base);                                
        $result = mysql_query("SELECT * FROM city WHERE idstate=$_POST[idcity]");
        $city = '<option value="0">Select City...</option>';

        while($row = mysql_fetch_array($result)) {
            $city .= '<option value="' . $row['idcity'] . '">' . utf8_encode($row['nomecity']) . '</option>';
        }
        return $city;
    }
}
城市表:

CREATE TABLE `city` (
  `idcity` int(4) NOT NULL auto_increment,
  `nomecity` varchar(20) NOT NULL default '',
  `idstate` int(4) NOT NULL default '0',
  `siglacity` char(2) NOT NULL default '',
  PRIMARY KEY  (`idprovincia`)
) TYPE=MyISAM AUTO_INCREMENT=109 ;

-- 
-- Dump dei dati per la tabella `city`
-- 

INSERT INTO `city` VALUES (1, 'Ancona', 1, 'AN');
...
和两个php函数:

public function getState()
 {
  if(isset($this->attiva))
  {
$base = mysql_connect ('localhost', 'bolmdb', 'bolmdb');
mysql_select_db ('bolmdb', $base);                                
    $result = mysql_query("SELECT * FROM state");
$state = '<option value="0">Select State...</option>';

while($row = mysql_fetch_array($result))
{
$state .= '<option value="' . $row['idstate'] . '">' . utf8_encode($row['nomestate']) . '</option>';
}           
return $state;
  }
 }

public function getCity()
 {
  if(isset($this->attiva))
  {
  $base = mysql_connect ('localhost', 'bolmdb', 'bolmdb');
mysql_select_db ('bolmdb', $base);                                
    $result = mysql_query("SELECT * FROM city WHERE idstate=$_POST[idstate]");
$city = '<option value="0">Select City...</option>';

while($row = mysql_fetch_array($result))
{
$city .= '<option value="' . $row['idcity'] . '">' . utf8_encode($row['nomecity']) . '</option>';
}           
return $city;
  }
 }

但是这样,当我用$city=$\u POST['city']得到值时;我将ID值存储在数据库中。我曾想在CITY表中用nometate更改IDSTATE,但我发现这不是更好的解决方法,而且它可能会产生@Gerard评论的非ASCII字符问题。最后,出于好奇,我想知道是否有一种方法可以在特定情况下获得输出函数。utf8_编码$row['nomecity']。而不是选项值。

首先,您需要修改字段id,将其更改为varchar。在数据库中将city的id替换为他的名字

我不确定,我希望看到您的数据库表不是数据库表字段,正如您向Chumillas显示的那样,但也许您应该更改此片段

'<option value="' . $row['idcity'] . '">'
你得到的是城市的名字而不是身份证

编辑: 顺便说一下,由于城市名称可以包含非ASCII字符,我强烈建议您在表中创建另一个字段来存储城市的代表性名称,但不包含它们。例如,如果创建一个名为“昵称”的VARCHAR字段,则应使用以下行替换所述行:

'<option value="' . $row['nickname'] . '">'

嗨,我不太明白。我的数据库字段类似于city varchar40 NOTNULL,我输入idcity选项值以使用ajax填充下拉列表。非常感谢。
'<option value="' . $row['idcity'] . '">'
'<option value="' . utf8_encode($row['nomecity']) . '">'
$city = $_POST['city'];
'<option value="' . $row['nickname'] . '">'