【问题标题】:PHP select value not saving to MySQL [closed]PHP选择值不保存到MySQL [关闭]
【发布时间】:2013-05-20 01:18:07
【问题描述】:

无法弄清楚为什么下面的内容可以保存在我的本地测试服务器上,但不能保存在我的托管服务器上。美元符号是唯一可以节省我托管的值。全部保存在本地。

对于这两个我都有 "enum('$', '€', '¥', '£')" 用于具有 utf8_unicode_ci 排序规则的类型。

<select name="user_currency" id="user_currency">
    <option value="$" <?php echo ($user_currency == '$'?'selected="selected"':'');?>>$ - Dollar</option>  
    <option value="&euro;" <?php echo ($user_currency == '&euro;'?'selected="selected"':'');?>>&euro; - Euro</option>                      
    <option value="&yen;" <?php echo ($user_currency == '&yen;'?'selected="selected"':'');?>>&yen; - Yen</option>                 
    <option value="&pound;" <?php echo ($user_currency == '&pound;'?'selected="selected"':'');?>>&pound; - Pound</option>               
</select>

查询:

    $query = "UPDATE users as us SET user_currency = ".$db->prep($_POST['user_currency'])." WHERE us.user_id = '{$user_id}'";

准备函数

function prep($value,$strip_tags = 1){ 
       // Stripslashes
       if (get_magic_quotes_gpc()) {
           $value = stripslashes($value);
       }
       // Quote if not integer
       if (!is_numeric($value) || $value[0] == '0') {
           $value = "'" . mysql_real_escape_string($value) . "'";
       }           
      if($strip_tags){
            $value = DB::strip_html_tags($value);
       }else{
            $value = DB::strip_html_tags($value,0);
       }           
       return $value;
}   

有什么想法吗?

【问题讨论】:

  • 插入查询在哪里?
  • 如何保存到本地测试服务器?
  • 我在本地测试服务器上使用 XAMMP。
  • 不确定问题是什么?
  • 请用完整代码、mysql查询、表单操作等说明

标签: php mysql enums


【解决方案1】:

也许你应该尝试改变这部分:

<select name="user_currency" id="user_currency">
    <option value="$" <?php echo ($user_currency == '$'?'selected="selected"':'');?>>$ - Dollar</option>  
    <option value="&euro;" <?php echo ($user_currency == '&euro;'?'selected="selected"':'');?>>&euro; - Euro</option>                      
    <option value="&yen;" <?php echo ($user_currency == '&yen;'?'selected="selected"':'');?>>&yen; - Yen</option>                 
    <option value="&pound;" <?php echo ($user_currency == '&pound;'?'selected="selected"':'');?>>&pound; - Pound</option>               
</select>

成为:

<select name="user_currency" id="user_currency">
    <option value="$" <?php echo ($user_currency == '$'?'selected="selected"':'');?>>$ - Dollar</option>  
    <option value="&amp;euro;" <?php echo ($user_currency == '&euro;'?'selected="selected"':'');?>>&euro; - Euro</option>                      
    <option value="&amp;yen;" <?php echo ($user_currency == '&yen;'?'selected="selected"':'');?>>&yen; - Yen</option>                 
    <option value="&amp;pound;" <?php echo ($user_currency == '&pound;'?'selected="selected"':'');?>>&pound; - Pound</option>               
</select>

否则浏览器将发送与您声明的枚举不匹配的实际货币字符。 [编辑] 这是因为您的枚举是 HTML 实体。我可以建议在内部改用日元、美元等货币代码吗?

[澄清编辑:ISO 货币代码更容易移动,如果您决定利用一些与货币相关的资源,则更有可能使用第 3 方 API。至于为什么它在本地而不是在外部服务器上工作......如果您在用户输入上使用任何实体函数,则可能是实体处理中的 PHP 版本差异。如果是这样,就更有理由使用 ISO 货币代码。]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多