用PDO将数据写入DB会产生奇怪的结果

时间:2013-12-05 15:34:02

标签: php mysql pdo

我有这个代码用于连接PDO:

$conn = new PDO('mysql:host = localhost; dbname = DataBase', 'kkk', 'kkkkkk');
if ( $conn ) { echo 'Connect Shodee'; }
} catch (PDOException $e) {
    $e->error();    
}

这行用于INSERT值:

function InsertFileToDb($filename, $filetype, $recieve, $update, $from, $comment, $file) {
$sql="INSERT INTO `DataBase`.`assistance`(`filename`,`filetype`,`recieve`,`update`,`from`,`comment`,`file`) VALUES(:filename, :filetype, :recieve, :update, :from, :comment, :file)";
$prepare = $conn->prepare($sql);
$result = $prepare->execute(array(
                    ':filename'=>$filename, ':filetype'=>$filetype, ':recieve'=>$recieve,
                    ':update'=>$update, ':from'=>$from, ':comment'=>$comment, ':file'=>$file));

但是当我从我的数据库中获取数据时,像$from这样的UTF-8编码值就像0o_xd7sjnc,x ... 你能告诉我什么是错的吗? 我检查了HEREHERE以及其他一些帖子,但没有找到合适的答案......

2 个答案:

答案 0 :(得分:-1)

PDO和mysql都没有改变你的数据 所以,它在其他地方被改变了。

顺便说一句,你可以用更少的方式编写你的函数

function InsertFileToDb($filename, $filetype, $recieve, $update, $from, $comment, $file) {
    $sql = "INSERT INTO assistance VALUES(NULL, ?, ?, ?, ?, ?, ?, ?)";
    $conn->prepare($sql)->execute(func_get_args());
}

答案 1 :(得分:-1)

也许这是一个编码问题,所以你可以尝试这些步骤,看看会发生什么:

添加:$ conn = new PDO('mysql:host = localhost; dbname = Database; charset = utf8 ','kkk','kkkkkk');

确保您的数据库表格为utf8_unicode_ci

同时将此内容添加到<head>代码中的html页面:<meta http-equiv="Content-Type" content="text/html; charset=utf-8">