2010-09-28 120 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