print_r一个插入语句php pdo

时间:2015-06-09 11:30:46

标签: php mysql pdo

我正在使用此方法将数据插入我的数据库:

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

现在的问题是:

  1. 如何print_r()整个sql语句?

    的print_r($查询 - &GT;执行());

  2. 将显示(1,1,1,1)

    我想要的东西: (menue,(p)Salat(br)GemüseundTeigwaren(/ p),2015-09-06,2)

    我不确定它是否无法访问数据库或数据库是否存在问题。 db本身可以处理umlaute并用utf-8编写。我抛弃了文件并仔细查看它,它不应该被破坏。

2 个答案:

答案 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);
    }

}