数据UTF-8插入latin1_swedish_ci表MYSQl

时间:2017-07-19 11:19:21

标签: php mysql sql utf-8 character-encoding

经过多次研究后,我仍然遇到了问题。

首先,
我试图通过从PHP文件生成查询但在数据库中插入一些数据,但这不起作用。

所以我尝试在PHPMyAdmin上手动执行查询并且它有效。然后,我开始研究,并且我发现的最可能的解释是,我的编码是不一样的。

我的信息是UTF-8和我的表latin1_swedish_ci但是出现了一个非常糟糕的问题,我无法修改数据库。 :(

现在, 我正在寻找一种方法将UTF-8转换为latin1_swedish_ci文件中的PHP

我希望有人可以帮助找到解决方案,或者可以定位我的研究。

这是我的代码

function insertGrp($rawData)
{
    //Format data form best use
    $data = self::formatFormData($rawData);
    $insertGrpReq ="INSERT INTO `fwsgup` (`KGROUP`, `KUSER`, `KDATES`, `FDATEE`, `PSPY`) VALUES ('";
    //First part of request
    $groups = $data["userGroup"];
    //Separator for concat
    $separator = "', '";
    //Instance of db
    $db = new DBInteract();
    //foreach group needed to be removed
    foreach($groups as $group)
    {       
        //converting dates for database
        $tmp = strtotime($group[1]);
        $startDate =date('Ymd', $tmp);

        $tmp = strtotime($group[2]);
        $endDate =date('Ymd', $tmp); 

        //DEBUG for see query
        //output example INSERT INTO `fwsgup` (`KGROUP`, `KUSER`, `KDATES`, `FDATEE`, `PSPY`) VALUES ('gAdmin', 'fana', '20170619', '20190619', '20171907133741faan');
        print($insertGrpReq.$group[0].$separator.$data["userInfo"]["userID"].$separator.$startDate.$separator.$endDate.$separator.date("YdmHis")."faan');</br>");
        //here's my problem
        $db->query($insertGrpReq.iconv("UTF-8", "ISO-8859-1", $group[0]).$separator.iconv("UTF-8", "ISO-8859-1", $data["userInfo"]["userID"]).$separator.iconv("UTF-8", "ISO-8859-1", $startDate).$separator.iconv("UTF-8", "ISO-8859-1", $endDate).$separator.iconv("UTF-8", "ISO-8859-1//TRANSLIT", date("YdmHis")).iconv("UTF-8", "ISO-8859-1", "faan"));
    }

}

这是表

CREATE TABLE FWSGUP ( KGROUP varchar(16) NOT NULL, KUSER varchar(16) NOT NULL, KDATES int NOT NULL, FDATEE int, PSPY varchar(24), CONSTRAINT Q_CCVDPRD_FWSGUP_KGROUP_00001 PRIMARY KEY (KGROUP,KUSER,KDATES) )

1 个答案:

答案 0 :(得分:0)

iconv()会将字符串从一种编码转换为另一种编码。

iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text);