php - 如果我在 DEFAULT_FETCH_MODE 连接中设置为默认值,是否需要使用 PDO::FETCH_ASSOC?

标签 php mysql pdo

我想知道每次将其设置为默认 ATTR_DEFAULT_FETCH_MODE 时是否需要使用 PDO::FETCH_ASSOC

这是我的连接:

$host = 'localhost';
$db   = 'test';
$user = 'root';
$pass = '';
$port = '3308';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;port=$port;charset=$charset";
$options = [
    \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    \PDO::ATTR_EMULATE_PREPARES   => false,
];
try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

以及使用 fetch 的示例查询:

$stmt = $pdo->prepare('SELECT * FROM users');
$stmt->execute();
$user = $stmt->fetch();

$user = $stmt->fetchAll();

不用写 $user = $stmt->fetchAll(PDO::FETCH_ASSOC); 就够了吗

最佳答案

默认获取样式为 fetch()fetchAll()PDO::ATTR_DEFAULT_FETCH_MODE(默认为 PDO::FETCH_BOTH)。

您在连接设置中设置的 PDO::ATTR_DEFAULT_FETCH_MODE 会覆盖 PDO::FETCH_BOTH

因此,基本上您不需要在每个查询中指定获取样式。 $user = $stmt->fetch();$user = $stmt->fetchAll(); 对于您的情况应该足够了。

关于php - 如果我在 DEFAULT_FETCH_MODE 连接中设置为默认值,是否需要使用 PDO::FETCH_ASSOC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59556811/

相关文章:

php - PDO 识别缺失的绑定(bind)变量

php - 使用自定义异常处理程序捕获 "PDOException"

php - 如何在php中将数组项放在末尾?

带有 html 的 javascript node.js 服务器

php - 如何将 mysql NOW() 函数从数组传递到清理值

php - 如何在 wp_posts 表中手动插入带有 html 代码的字符串

javascript - 使用 php 创建的图像上的鼠标 onclick() 事件

php - MySQL 一对多关系。不同的表,还是PHP处理?

php - 在 Centos 中升级 PHP

php - 如何获取MySQL int字段的长度