我正在使用此方法将数据插入我的数据库:
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($查询 - &GT;执行());
将显示(1,1,1,1)
我想要的东西: (menue,(p)Salat(br)GemüseundTeigwaren(/ p),2015-09-06,2)
我不确定它是否无法访问数据库或数据库是否存在问题。 db本身可以处理umlaute并用utf-8编写。我抛弃了文件并仔细查看它,它不应该被破坏。
答案 0 :(得分:3)
你无法看到完整的查询,因为它在PHP方面不存在。
PHP首先发送查询,然后在使用预准备语句时发送参数 (不确定在启用仿真模式时会发生什么)。
如果您想查看最终查询,您应该启用数据库的查询日志并在那里查看。
这是您可以通过PHP获得的最接近的: http://us2.php.net/manual/en/pdostatement.debugdumpparams.php
答案 1 :(得分:1)
试试这个......
function insertMenue($content, $date) {
$session = $_SESSION['aid'];
global $pdo;
$pdo->exec('SET CHARACTER SET utf8');
$params = ["menue", "<p>$content</p>", $date, $session];
// Check all your params are set...
// Although you may want to consider checking these before entering this block
print_r($params);
$sql = "INSERT INTO menue( type
, content
, date
, creator
)
VALUES( ?
, ?
, ?
, ?
)";
try {
$sth = $pdo->prepare($sql);
$sth->execute($params);
} catch (PDOException $e) {
throw new pdoDbException($e);
}
}