我在我的LAMP服務器上遇到了一些SQL語法/轉義變量的問題。php,MySQL和變量包含å,ä和ö轉義問題
我想使用的命令如下:
$sql=mysql_query("INSERT INTO '$table' (FirstName, LastName, StartDate, TimeStroke, DueDate, Duration, Price, Retailer, Checksum)
VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[startdate]','$_POST[timestroke]','$duedate','$_POST[duration]','$price','$_SESSION[name]','$random')");
的問題是,有時$表變量包含象,A型和O字符。 因此我需要在$ table周圍放置''以確保它保持不變。但是這樣做時收到錯誤:
"Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''tablename' (FirstName, LastName, StartDate, TimeStroke, DueDate, Duration, P' at line 1".
貌似由「逃避」產生了一個問題。 我試着用mysql_real_escape_string替換查詢:
"$sql=sprintf("INSERT INTO '".mysql_real_escape_string($table)."' (FirstName, [...]"
但那不幫我滿意。 有沒有辦法保持變量中的數據完好無損,仍然能夠運行查詢?或者我必須接受å,ä,ö被禁止使用php/MySQL嗎?
謝謝!讀它吧! – xeet 2010-08-13 15:54:33
謝謝! NIce,但現在我正在從數據庫中獲取所有內容的奇怪字符。 現在,我必須轉換數據庫才能從表中獲取信息,然後在表單中重用它? – xeet 2010-08-13 18:03:38
表中的字符編碼是什麼?你能舉出一些「奇怪的人物」的例子,他們應該是什麼樣的人。 – 2010-08-13 18:16:32