PDO-> exec返回int(0)或Null

时间:2015-02-13 20:50:13

标签: mysql pdo

我试图确定是否在数据库中创建了用户。 PDO返回int(0)或null。

代码看起来像这样:

if( $dbh->exec( "CREATE USER 'test'@'%' IDENTIFIED BY 'password'" ) )
    echo "User Created";
else
    echo "User could not be created";

如果创建了用户,则会输出"无法创建用户"。如果用户已经在数据库中,那么脚本将不会输出任何内容。

但是,改为

if( $dbh->exec( "CREATE USER 'test'@'%' IDENTIFIED BY 'password'" ) === 0 )
    echo "User Created";
else
    echo "User could not be created";

将导致"用户创建"如果用户已创建,则如果已在数据库中创建用户则无输出。

这是为什么?或者更重要的是,如何检查用户是否已成功创建?我是否应该依靠成功返回int(0)和失败时返回NULL?由于没有记录,我担心这样做可能会导致将来出现问题。

谢谢!

- 我需要检查用户是否被创建的原因是因为我正在创建用户和数据库。如果无法创建用户,我不想创建数据库。此外,如果脚本遇到问题并且无法完成任务,我想撤消之前执行的任务。不幸的是,PDO事务不能用于创建新用户和数据库,它们总是自动提交。

1 个答案:

答案 0 :(得分:3)

该函数返回受影响的行数(int),而不是布尔值,具体取决于语句的执行方式。例如,返回值0表示没有更改。