西欧语言mysql查询问题

Rak*_*oon 1 mysql character-encoding

我正在编写一个网页,用户可以上传自己的画廊.执行此操作时,系统会为与图库同名的图像创建子文件夹,对图库的引用将添加为表格中的一行,并且还会为图库创建一个单独的表格,其中包含图像列表.

当我尝试创建一个新画廊时,只要没有西欧标志,一切正常.如果我将画廊命名为"beär",我将收到一个错误,"表'databasename.beär...'不存在.

然而,该表确实存在正确的名称,我已经尝试在返回错误的mysql查询之前打印出变量$ sub(表示查询中的库名称),它正确打印.

还尝试了mysql_query("SET NAMES'latin1'",$ connection)))和UTF-8相同的latin1什么都不做,UTF-8更加拧紧所有东西(画廊名称实际上将是beär).

文本文件采用ISO 8859-1编码,字符集定义也是ISO 8859-1

这是查询:

if(!($result = @ mysql_query("SELECT * FROM {$database}.`{$sub}`
            ORDER BY item_id DESC", $connection)))
        {showerror();}
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏

Pek*_*ica 5

表'databasename.beär...

您正在按照的名称创建数据库表.任何编码中的特殊字符都不能很好地发挥作用!

更正:根据文档,确实可以使用当前字符集中的任何字母数字字符!在这种情况下,您需要更改输入.查看错误消息,äin Beär将作为UTF-8字符提供.你需要解决这个问题.这是在Ajax请求中发生的吗?默认情况下,这些编码为UTF-8.

无论如何,我会在表名中使用特殊字符感到不安.我不会这样做.

此外,创建每用户表通常是基本设计错误的症状.为什么不将所有记录保存在一个表中,通过列标识用户?