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

标签 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";

如果用户已创建,将导致“User Created”,如果用户已在数据库中创建,则不会输出。

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

谢谢!

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

最佳答案

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

关于mysql - PDO->exec 返回 int(0) 或 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28508507/

相关文章:

php - 如何将从 SELECT 返回的多个变量存储在它们自己的数组中 - PDO

php - 两个表之间的关系并显示查询结果

c# - CheckedListBoxControl Devexpress C# ---- 将所有项目保存在 MysQL 数据库中

mysql - 我可以在 MySQL 中写一个触发器来在 AFTER DELETE 和 AFTER UPDATE 中都生效吗?

php - 通过跟踪脚本的链接会提取正确的文章 ID,但文章文本不正确

php - 是否需要关闭 PDO 连接

mysql - 包含 IN 和子查询的 UPDATE 查询非常慢

java - 将数据库表填充到具有 1000 行的 JavaFX 表中

mysql - 如何从数据库读取csv文件?

PHP PDO Bit(1) 返回错误的数据类型