我想知道每次将其设置为默认 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/