Php 创建表后,它将显示此数组([0]=>;00000[1]=>;[2]=>;)
在PDO中使用exec()创建表之后,如下所示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(
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语句?