【发布时间】:2015-06-09 11:30:46
【问题描述】:
我正在使用这种方法将数据插入到我的数据库中:
function insertMenue($content, $date) {
$session = $_SESSION['aid'];
global $pdo;
$pdo->exec('SET CHARACTER SET utf8');
$query = $pdo->prepare('INSERT INTO menue(type, content, date, creator) VALUE (?,?,?,?)');
$query->bindValue(1, "menue");
$query->bindValue(2, "<p>" . $content . "</p>");
$query->bindValue(3, $date);
$query->bindValue(4, $session);
$query->execute();
}
我正在为数组中的每个对象调用此方法。现在每次应该有一个包含元音变音(ä,ö,ü)的字符串时,字符串会在元音变音应该是的地方被切断。
例如我在写:
<p>Salat<br>Gemüse und Teigwaren</p>
数据库中的数据恰好是:
<p>Salat<br>Gem
现在的问题是:
-
我怎样才能 print_r() 整个 sql 语句?
print_r($query->execute());
将显示 (1,1,1,1)
我想要类似的东西: (菜单, (p)Salat(br)Gemüse und Teigwaren(/p), 2015-09-06, 2)
我不确定它是否没有到达数据库或数据库是否有问题。 db 本身可以处理变音符号并用 utf-8 编写。我转储文件并仔细查看它,它应该没有损坏。
【问题讨论】:
-
您可以在到达 SQL 块之前打印
$date和$session- 但请查看 PHP PDO 的文档 - php.net/manual/en/pdostatement.bindvalue.php - 尝试规定您想要的类型插入(例如$query->bindValue(1, "menue", PDO::PARAM_STR); -
如果您在数据库中使用真正的预准备语句,则没有“完整语句”。你有你的占位符查询,你有你的价值观。这个问题几乎可以肯定是编码问题,您实际上并没有将 UTF-8 编码的数据发送到数据库。