2017-01-24 3 views
0

execute()이 false를 반환하면 PDO가 예외를 throw하는지 궁금합니다.execute()가 false를 반환하면 PDO가 예외를 throw합니까?

<?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]); 
스스로를 볼 수 있습니다
관련 문제