2010-09-28 117 views
0

我使用cURL從網頁中拉出選定的數據,直到最近我一直在錄製輸出到純文本文件,但現在我更好地理解了MySQL/SQLite我決定完全切換到關係數據庫,使得管理數據變得更加容易。PHP SQLite錯誤

但我已經遇到了幾個問題,我一直沒能解決我自己的:

1)編輯:問題簡單地使用單獨sqlite_escape_string解決。

然而其他問題仍然是:

2)被插入到數據庫中的內容似乎有它的編碼方式弄亂了例如™變成¢,'變成'等等。只有在SQLite正在處理它時纔會發生這種情況,否則,如果我以其他方式回顯完全相同的數據或將其保存到文本文件,則會保留編碼(UTF-8)並正確呈現所有內容。

我試過使用utf8_encode();之前插入,但只是更糟糕的東西了。我要指出的是手動編輯插入工作後這樣的問題顯然與數據庫本身,而是用的方式被插入的數據轉換成它

下面是當前的代碼:

$name = sqlite_escape_string($name); 
$category = sqlite_escape_string($category); 
$html = sqlite_escape_string($html); 

$db = new SQLiteDatabase('DB.sqlite'); 
$query = 'INSERT INTO Table (Name, Category, Html)' . "VALUES ('$name', '$category', '$html')"; 

$db->queryExec($query); 

顯然其他人有與此類似的問題:

Link
Link

+0

你絕對應該運行'在單值'$ name','$ html' sqlite_escape_string'等** **不上'$ insert'。 – 2010-09-28 06:25:27

+0

嘿,你是對的,它只需要這個:$ html = sqlite_escape_string($ html); 我覺得很笨,哈哈。 – 2010-09-28 22:27:54

回答

0
$insert = compact('name','category','html'); 
$insert = array_map('sqlite_escape_string',$insert); 
$insert = '"'. implode('", ',$insert).'"'; 

或者一個班輪:

$insert = '"'. implode('", ', array_map('sqlite_escape_string', compact('name','category','html'))).'"'; 
+0

我試過了,但沒有奏效。感謝您的嘗試,也許你可以幫我解決這個無法解決的編碼問題呢? – 2010-09-28 22:28:59