“×”字符破坏MySQL记录

时间:2014-08-22 07:18:48

标签: php mysql sql mysqli

“×”符号(不是一点点x),我相信这是乘法符号,正在打破MySQL记录。

问题在于,每当我尝试检索具有此符号“×”的记录时,记录将返回为空白。

我顺便使用PHP和WAMP服务器。

整理是latin1_swedish_ci。但是,更改排序规则似乎并未解决问题。 mysql版本是5.6.17 这是我的函数,它从表中获取记录并将其保存到对象:

public function assign() {
    $SQL = "SELECT * FROM " . $this->tb . " ORDER BY " . $this->order;
    $this->tb_handle = mysqli_query($this->db_handle,$SQL);

    $this->rowNumber = mysqli_num_rows($this->tb_handle);

    //this creates arrays from records given even if the table is empty
    //this is to prevent errors
    if ($this->rowNumber === 0) {
        foreach ($this->records as $record) {
            $this->{$record} = array();
        } 
    } else {
        $i = 0;        
        while ( $db_field = mysqli_fetch_assoc($this->tb_handle) ) {
            foreach ($this->records as $record) {
                $this->{$record}[$i] = $db_field[$record];
                $this->{$record}[$i] = htmlspecialchars($this->{$record}[$i]);
            }            
            $i++;
        }
    }
}

这适用于没有“×”符号的任何内容。我不知道为什么该符号应该导致整个记录返回为空白。

1 个答案:

答案 0 :(得分:3)

我看到你使用htmlspecialchars直到PHP 5.4,内部编码是UTF-8。因此,如果您有一个包含iso数据的记录,并且将其放在 htmlspecialchars 中,则不会得到任何结果。

在这种情况下,您必须将编码设置为 iso-8859-1

要解决此问题,您可以定义编码

htmlspecialchars($value, ENT_QUOTES, "ISO-8859-1");

这将修复错误显示的符号:

mb_convert_encoding($value, "UTF-8");

我认为这可能是你的问题。