无法弄清楚为什么以下内容会在我的本地测试服务器上保存正常,但不能在我的托管上保存。美元符号是我托管的唯一值。所有在当地保存都很好。
对于我有两个
对于具有utf8_unicode_ci排序规则的类型,“enum('$', '€', '¥', '£')
”。
<select name="user_currency" id="user_currency">
<option value="$" <?php echo ($user_currency == '$'?'selected="selected"':'');?>>$ - Dollar</option>
<option value="€" <?php echo ($user_currency == '€'?'selected="selected"':'');?>>€ - Euro</option>
<option value="¥" <?php echo ($user_currency == '¥'?'selected="selected"':'');?>>¥ - Yen</option>
<option value="£" <?php echo ($user_currency == '£'?'selected="selected"':'');?>>£ - 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;
}
有什么想法吗?
答案 0 :(得分:0)
也许您应该尝试更改此部分:
<select name="user_currency" id="user_currency">
<option value="$" <?php echo ($user_currency == '$'?'selected="selected"':'');?>>$ - Dollar</option>
<option value="€" <?php echo ($user_currency == '€'?'selected="selected"':'');?>>€ - Euro</option>
<option value="¥" <?php echo ($user_currency == '¥'?'selected="selected"':'');?>>¥ - Yen</option>
<option value="£" <?php echo ($user_currency == '£'?'selected="selected"':'');?>>£ - Pound</option>
</select>
是:
<select name="user_currency" id="user_currency">
<option value="$" <?php echo ($user_currency == '$'?'selected="selected"':'');?>>$ - Dollar</option>
<option value="&euro;" <?php echo ($user_currency == '€'?'selected="selected"':'');?>>€ - Euro</option>
<option value="&yen;" <?php echo ($user_currency == '¥'?'selected="selected"':'');?>>¥ - Yen</option>
<option value="&pound;" <?php echo ($user_currency == '£'?'selected="selected"':'');?>>£ - Pound</option>
</select>
否则浏览器将发送与您声明的枚举不符的实际货币字符。 [编辑]这是因为您的枚举是HTML实体。我建议在内部切换使用货币代码,如JPY,USD等?
[澄清编辑:ISO货币代码更易于移动,如果您决定使用某些与货币相关的资源,第三方API更有可能使用它们。至于它为什么在本地工作而不在外部服务器上...如果您在用户输入上使用任何实体函数,则可能是实体处理中的PHP版本差异。如果是这种情况,则更有理由使用ISO货币代码。]