2017-01-24 14 views
0

​​がfalseを返すと、PDOが例外をスローするかどうか疑問に思います。execute()がfalseを返した場合、PDOは例外をスローしますか?

<?php 
$db = new PDO('mysql:host=localhost;dbname='.$dbname, $user, $pass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

try{ 
    $db->beginTransaction(); 
    $query = $db->prepare('INSERT INTO threads (title,perma) VALUES ("hey", "hey")'); 
    if(!$query->execute()) 
    { 
     echo ":("; 
    } 
}catch(Exception $e){ 
    echo ":)"; 
    $db->rollBack(); 
} 
?> 

参照することが可能です ':('?私は手動で例外をスローする必要がありますか?

+3

あなたは単にそれを試してみませんか?原始的なテストケース(10行のスクリプト)を作って、あなたの答えを... – arkascha

答えて

1

ウィルPDO実行した場合(例外をスロー)はい偽?

を返します。

いつでもテストケースを作成して自分で見ることができます

$pdo = new PDO("mysql:host=localhost;dbname=$dbname;charset=utf8", $user, $pass); 
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$pdo->query("CREATE temporary TABLE executest (id int auto_increment primary key)"); 

$stmt = $pdo->prepare("INSERT INTO executest VALUES (?)"); 
$stmt->execute([1]); 
$stmt->execute([1]); 
関連する問題