【问题标题】:Entering array values into database将数组值输入数据库
【发布时间】:2015-07-23 03:16:44
【问题描述】:

我使用下面的代码将选定的数组值输入到我的数据库中,具体取决于他们选择的国家/地区。

 $Location = mysql_real_escape_string($_POST['location'], $Link);

 MYSQL_Query ("INSERT INTO users(location)VALUES('$Location')");

 $countries = array(
    "AF" => "Afghanistan",
    "UK" => "United Kingdom",
    "US" => "United States",
    "AS" => "American Samoa", //etc..
    echo '<select name="location">'; 

  foreach($countries as $countrycode =>$country) { 
  echo '<option value="' . $countrycode. '">' . $country . '</option>'; 
    } 
  echo '</select>'; 

一切正常,除了在我的 MySQL 数据库中存储的值是 $countrycode 所以它为英国保存为英国,我希望它保存为英国。我哪里错了?

PS;如果有人愿意,我有完整的国家/地区列表,亲切的问候,Shanie。

编辑:问题已解决! 已替换'&lt;option value="' . $countrycode. '"&gt;' . $country . '&lt;/option&gt;'; '&lt;option value="' . $country. '"&gt;' . $country . '&lt;/option&gt;';

感谢克里斯。

【问题讨论】:

  • 请记住mysql_* 函数已弃用。请迁移到 PDO。
  • 也许$location 应该是$countries[$_POST['location']] 并将$countries 数组向上移动到顶部?
  • 您的代码很容易受到 sql 注入的攻击。请使用准备好的语句而不是字符串连接

标签: php html mysql


【解决方案1】:

您需要将optionvalue 设置为name,而不是code

<option value="' . $country. '">' . $country . '</option>';

否则就是代码。

文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option

如果选择此选项,此属性的内容表示要与表单一起提交的值。如果省略该属性,则取值自选项元素的文本内容。

【讨论】:

  • 您可以节省时间!谢谢克里斯,非常感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 2015-03-29
  • 2012-04-17
  • 2014-07-21
  • 2017-02-19
  • 2015-12-03
相关资源
最近更新 更多