PDO->exec 返回 int(0) 或 Null
PDO->exec Returning int(0) or Null
我正在尝试确定是否在数据库中创建了用户。 PDO 是 returning int(0) 或 null。
代码看起来像这样:
if( $dbh->exec( "CREATE USER 'test'@'%' IDENTIFIED BY 'password'" ) )
echo "User Created";
else
echo "User could not be created";
如果创建用户,则输出"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";
如果用户已创建,将导致 "User Created",如果用户已在数据库中创建,则不会输出。
这是为什么?或者更重要的是,如何检查用户是否已成功创建?我应该在成功时依赖 return 的 int(0) 而在失败时依赖 NULL 吗?由于没有记录,我担心这样做可能会导致将来出现问题。
谢谢!
-- 我需要检查用户是否已创建的原因是因为我正在创建用户和数据库。如果无法创建用户,我不想创建数据库。另外,如果脚本遇到问题无法完成任务,我想撤消之前执行的任务。不幸的是,PDO 事务不适用于创建新用户和数据库,它们总是自动提交。
函数 return 是受影响的行数 (int),而不是布尔值,具体取决于语句的执行方式。例如,return 值为 0
表示没有变化。
我正在尝试确定是否在数据库中创建了用户。 PDO 是 returning int(0) 或 null。
代码看起来像这样:
if( $dbh->exec( "CREATE USER 'test'@'%' IDENTIFIED BY 'password'" ) )
echo "User Created";
else
echo "User could not be created";
如果创建用户,则输出"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";
如果用户已创建,将导致 "User Created",如果用户已在数据库中创建,则不会输出。
这是为什么?或者更重要的是,如何检查用户是否已成功创建?我应该在成功时依赖 return 的 int(0) 而在失败时依赖 NULL 吗?由于没有记录,我担心这样做可能会导致将来出现问题。
谢谢!
-- 我需要检查用户是否已创建的原因是因为我正在创建用户和数据库。如果无法创建用户,我不想创建数据库。另外,如果脚本遇到问题无法完成任务,我想撤消之前执行的任务。不幸的是,PDO 事务不适用于创建新用户和数据库,它们总是自动提交。
函数 return 是受影响的行数 (int),而不是布尔值,具体取决于语句的执行方式。例如,return 值为 0
表示没有变化。