2013-05-20 66 views
-3

無法弄清楚爲什麼在我的本地測試服務器上可以很好地保存下面的內容,但不能保存到我的託管服務器上。美元符號是唯一可以節省託管費用的值。所有節省在當地。PHP選擇的值不保存到MySQL

對於我有 「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; 
} 

任何想法?

+1

哪裏的插入查詢? – 2013-05-20 01:19:11

+3

哪裏有什麼東西 – Drew

+0

它如何保存到您的本地測試服務器? – matzone

回答

0

也許你應該嘗試改變這一部分:

<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貨幣代碼更容易移動,而第三方API更有可能使用它們。至於爲什麼它在本地工作,而不是在外部服務器上工作......如果您在用戶輸入中使用任何實體功能,則可能是PHP版本在實體處理方面的差異。如果是這樣的話,所有更多的理由使用ISO貨幣代碼。]