在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";
答案 0 :(得分:2)
根据PDO::exec manual,它返回受查询影响的行数。并且没有受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>
}