2

PDO::exec()クエリを実行すると、機能します。しかし、最初に試してみるとPDO::prepare() PDO::execute()うまくいきません。なんで?

たとえば、これは期待どおりに機能します。

$db->exec($string);

ただし、これはしません。

$stmt = $db->prepare($string);
$stmt->execute();

エラーはスロー$db->errorInfoされず、すべてゼロが表示され、成功を意味します。

これは私にはまったく意味がありません。

コンテキストの編集

注意してください、newDB()これは私がここで必要とする設定でDBを開始する単なる関数です。

以下を実行すると、期待どおりに機能します。

$db = newDB();

if (!$error) {
    if (isset($id)) {
        try {
            $db->exec('UPDATE Events SET Title = "WHY" , Date = "2012-11-01 00:00:00", Place = "no", Description = "no", UDate = now() WHERE Id = "12"');
        } catch(PDOException $e) {
            $error = 1;
        }
    }
}

$db = null;

しかし、これはそうではなく、私は理由がわかりません:

$db = newDB();

if (!$error) {
    if (isset($id)) {    
        try {
            $stmt = $db->prepare('UPDATE Events SET Title = "WHY" , Date = "2012-11-01 00:00:00", Place = "no", Description = "no", UDate = now() WHERE Id = "12"');
            $stmt->execute();
        } catch(PDOException $e){
            $error = 1;
        }
    }
}

$db = null;
4

1 に答える 1

5

例外モードを設定しましたか?

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
于 2012-09-12T02:07:47.010 に答える