2014-02-15 147 views
-1

我有一個腳本,您可以使用輸入的名稱在數據庫中創建一個表。但是,無論何時使用<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">,帶有「Å,Ä,Ö」(瑞典語)字符的表名都不會被創建。但後來當我刪除<meta>問題消失,但然後我的HTML內容無法顯示這些字符。 我希望有人能理解這一點。感謝任何answear。謝謝!UTF-8 - 無法正常工作,PHP

這是我當前的代碼:

<?php 
if(isset($_POST['add'])){ 
//variables 
$school = strip_tags(strtolower($_POST['addSchool'])); 
//connect 
$connect = new mysqli("localhost","root","","skolide"); 
$connect->set_charset('utf8'); 
$query = "CREATE TABLE IF NOT EXISTS ".$school."(
`id` INT(11) NOT NULL AUTO_INCREMENT, 
`name` VARCHAR(255) NOT NULL, 
`email` VARCHAR(255) NOT NULL, 
`text` TEXT NOT NULL, 
`ip` VARCHAR(255) NOT NULL, 
PRIMARY KEY (id) 
)"; 
$result = $connect->query($query); 


} 

?> 
+0

保留你的表名ASCII,它使你的生活變得更容易 –

+0

該網站是瑞典語。這將是一個相當大的問題。謝謝。 –

+0

它爲什麼會是這麼大的問題?表名應該隱藏給用戶,所以只能由開發者使用......正因爲這個原因,已經遇到了問題;但是你的表格創建的結果是什麼樣的?你是否正確驗證你的用戶輸入的表名?例如,你是否在反引號中附上表名? –

回答

1
  1. 請不要從用戶輸入數據庫表。
  2. 不要從任意字符集創建數據庫表名稱。
  3. 請勿使用任何meta代理來替換任何真實的HTTP標頭。

用安裝腳本自己創建所有表格一次。來自您提供的轉儲中已寫入的名稱。

+0

爲什麼不呢?謝謝。 –

+0

因爲你這樣做的方式是錯誤的。表名是程序的主題,而不是用戶界面。請請,在嘗試僱用自己作爲程序員之前,請至少拿一本書 –