2011-12-19 94 views
0

我的PHP/MySQL的應用程序試圖插入以下爲varchar字段:波蘭字符

ł

..however我在表中的數據存儲爲:

ł

這是我必須在PHP或MySQL中處理的東西嗎?

任何建議大大讚賞。

由於保羅

進一步的信息 - 該數據是用戶輸入,鍵入到文本框,然後的該值隨後被插入到MySQL。

更新:代碼

function addNewCustomer($data, $aid){ 
     $now = date('Y-m-d H:i:s'); 

     $row = mysql_fetch_array(mysql_query("SELECT MAX(CustomerID) FROM tbl001_Customer")); 

     $query = "INSERT INTO tbl001_Customer 
       (CustomerID,CustomerName,Country,Address1,Address2,Address3,Address4,Postcode,PhoneNumber) 
       VALUES ('".str_pad($row[0]+1,5,'0',STR_PAD_LEFT)."','{$data['quote_customer_name']}','{$data['quotecountry']}', 
         '{$data['quote_address1']}','{$data['quote_address2']}','{$data['quote_town_city']}', 
         '{$data['quote_country']}','{$data['quote_postcode']}','{$data['quote_primary_phoneno']}')"; 
     if (!mysql_query($query)) { 
      $isError = true; 
      echo mysql_error(); 
     } 
+0

數據來自哪裏?在我看來,就好像它是在那裏編碼的。 – 2011-12-19 16:00:18

+0

看起來htmlentities()在這裏被調用。你有一些代碼嗎? Mysql不會像這樣轉換它。如果你想存儲波蘭字符而不編碼等,你需要檢查mysql中表的字符集。 – 2011-12-19 16:01:41

+0

db是utf8&utf8_general_ci – 2011-12-19 16:03:16

回答

-1

。利用HTML_ENCODE的()之前在數據庫中插入,從數據庫中使用HTML_DECODE()數據選擇之後。

+0

將html_encode()保存爲「ł」而不是「& #322;」到數據庫中? – 2011-12-19 16:47:05

+0

是的,只有在這個確切的標誌。 – Spikey21 2011-12-19 16:49:12

0

這是你不應該在php中處理的東西。
您在某處調用htmlentities()函數,這是絕對無用的函數。

所以,只是擺脫這個函數調用,並保持你的數據不變。

爲了過濾用戶輸入的XSS注入,您必須使用htmlspecialchars()函數。

+0

嘿,我剛剛搜索了我的項目「htmlentities()」,但沒有結果,因此我沒有使用它。 – 2011-12-19 16:52:13

+0

這很奇怪。嘗試調試一點。你知道,表單和數據庫之間有一些代碼。只是嘗試在幾個地方打印出您的數據,並嘗試找出它發生變化的地方。 – 2011-12-19 17:10:20