Php 创建表后,它将显示此数组([0]=>;00000[1]=>;[2]=>;)

Php 创建表后,它将显示此数组([0]=>;00000[1]=>;[2]=>;),php,mysql,pdo,Php,Mysql,Pdo,在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(

在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();
 } 
@维卡斯,如果我错了,请纠正我。这是有效的

    $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";
根据,它返回受查询影响的行数。并且没有受
CREATE
查询影响的行。因此,此查询的
exec
即使成功,也将返回0。并且它将被评估为
false
。这解释了为什么即使没有错误也会调用
die

最好依赖异常,或者对exec的返回代码执行
==false
,以确定它是否失败。从手册中:

此函数可能返回布尔值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>
}
试试看{
$connection=new-PDO(“mysql:host=localhost;dbname=myDB”,'root',”;
$connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$connection->exec('createtablettest(fld1字符(40),fld2字符(40));
}捕获(PDO$e){
}

它的输出是什么?exec()返回一个int(或boolean false)。@Corbin:它看起来像的输出。在检查
PDO::exec
返回值时,OP很可能使用
==
而不是
==
。输出来自
PDO::errorInfo
。很可能是因为第一次运行脚本时已经创建了表。后续运行失败。@Vikas,不,在我第一次尝试时它显示为那样,我第二次这样做,消息是测试表已经存在。@jemz,是,但PDO默认不会引发异常。您需要使用将
PDO::ATTR_ERRMODE
设置为
PDO::ERRMODE_EXCEPTION
以使其引发异常。将setAttribute放置在何处,以便它引发异常iside my Try语句?