0

PDOでexec()を使用してテーブルを作成すると、次のように表示されます。

Array ( [0] => 00000 [1] => [2] => )

これはエラーですか、それともテーブルを正常に作成できましたか?データベースを検索すると、テーブルが作成されます。

これは私が実行したものです

try{

    $tbl = new PDO("mysql:host=localhost;dbname=myDB",'root',''); 
     $tbl->exec("CREATE TABLE test(fld1 CHAR(40),fld2 CHAR(40))")
     or die(print_r($tbl->errorInfo(),true));
   }
catch(Exception $e){
     echo $e.getMessage();
 } 

@Vikas、私が間違っている場合は私を訂正してください。これは機能しています

    $queryTBl="CREATE TABLE test(fld1 CHAR(40),fld2 CHAR(40))";

    $evaluateTBL=tbl->exec($queryTBL);

    if ($evaluateTBL===false)
         print "Test table could not be created";
    else
         print "Successfully Created";
4

1 に答える 1

2

PDO :: execマニュアルによると、クエリの影響を受ける行数を返します。CREATEまた、クエリの影響を受ける行はありません。したがってexec、このクエリでは、成功した場合でも0が返されます。そしてそれは評価されfalseます。dieこれは、エラーがない場合でも呼び出される理由を説明しています。

例外に依存するか=== false、execの戻りコードを実行して失敗したかどうかを判断することをお勧めします。マニュアルから:

この関数はブール値のFALSEを返す場合がありますが、FALSEと評価される非ブール値を返す場合もあります。詳細については、ブール値のセクションをお読みください。この関数の戻り値をテストするには、===演算子を使用します。

例外を除いて同じことを行う例:

try {
  $connection = new PDO("mysql:host=localhost;dbname=myDB",'root','');
  $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $connection->exec('CREATE TABLE test(fld1 CHAR(40),fld2 CHAR(40))');
} catch (PDOException $e) {
  <handle exception>
}
于 2012-05-12T10:02:35.090 に答える