【问题标题】:PDO set default fetch mode to FETCH_UNIQUEPDO 将默认获取模式设置为 FETCH_UNIQUE
【发布时间】:2014-05-22 08:56:04
【问题描述】:

不知道为什么我不能将 PDO 的默认获取模式设置为 FETCH_UNIQUE

这是我创建 PDO 对象并提出请求的方法:

$PDO = new PDO($mysql,$login,$password);
$PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_UNIQUE);

$prep = $PDO->prepare($selectQuery);
$prep->execute($params);

那么……

这不起作用(它没有考虑到之前的 setAttribute()):

$result = $prep->fetchAll(); 

这是可行的,但我不想为每个请求都写“PDO::FETH_UNIQUE”:

$result = $prep->fetchAll(PDO::FETCH_UNIQUE); 

我做错了什么? 我的目标是获取由所选表的主键索引的结果数组,就像在这个线程上一样:Is there a way to fetch associative array grouped by the values of a specified column with PDO?

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:
    $PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_UNIQUE);
    

    这不起作用,因为PDO::FETCH_UNIQUE 不是PDO::ATTR_DEFAULT_FETCH_MODE 的有效常量。在这里查看有效的获取模式常量http://www.php.net/manual/en/pdostatement.fetch.php

    似乎没有办法使用$PDO->setAttribute()启用PDO:FETCH_UNIQUE。您应该在对fetchAll() 的调用中明确地传递它。

    【讨论】:

    • 澄清:PDO::ATTR_DEFAULT_FETCH_MODE 设置默认的 fetch 模式,而不是默认的 fetchAll 模式。无法设置默认的 fetchAll 模式。 PDO::FETCH_UNIQUE 特定于 fetchAll()
    • 见鬼,很遗憾我必须为每个请求都写这个:(无论如何,谢谢你的信息......
    • 如果你必须重复你的代码,你可能需要创建一个类来避免这种情况
    猜你喜欢
    • 2012-06-17
    • 2011-04-23
    • 2015-01-06
    • 1970-01-01
    • 2012-02-18
    • 2017-12-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多