PDO使用定义的objectname获取obj

时间:2017-07-05 06:54:45

标签: php pdo

也类似:

PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE

我想做同样的事情:

PDO::FETCH_OBJ

表示我想选择每一行作为第一个值命名的对象。

示例:

id name url
1  Test www.test.de
2  Test2 www.test2.de

Select name, id, url FROM whatever;

$processes = $result->fetchAll(PDO::FETCH_OBJ);

返回0 - x

中的对象
fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP)

几乎就像我只想要2个缺点一样返回它:

   test {
      0: [
        'id': 1,
        'src': 'www.test.de'
      ]
    }

首先,我想在对象中保留名称(可以选择(选择名称,名称......),我内部有不必要的数组。

所以任何想法我如何得到它:

test [
        'name': 'test',
        'id': 1,
        'src': 'www.test.de'
      ]
test2 [
        'name': 'test2',
        'id': 2,
        'src': 'www.test2.de'
]

1 个答案:

答案 0 :(得分:2)

您可以使用:

$dbh = new PDO('mysql:dbname=my;host=localhost', 'root', '');

$sth = $dbh->prepare("SELECT name, id, name, url FROM data");
$sth->execute();

var_dump($sth->fetchAll(PDO::FETCH_OBJ | PDO::FETCH_GROUP | PDO::FETCH_UNIQUE));

输出将如下:

array(3) {
  'test 1' =>
  class stdClass#6 (3) {
    public $id =>
    string(1) "4"
    public $name =>
    string(6) "test 1"
    public $url =>
    string(13) "www.gmail.com"
  }
  'test 2' =>
  class stdClass#4 (3) {
    public $id =>
    string(1) "2"
    public $name =>
    string(6) "test 2"
    public $url =>
    string(14) "www.google.com"
  }
  'test 3' =>
  class stdClass#5 (3) {
    public $id =>
    string(1) "3"
    public $name =>
    string(6) "test 3"
    public $url =>
    string(21) "www.stackoverflow.com"
  }
}

但请注意:如果您在name列中添加重复值,您将获得具有相同名称的最后一条记录的值。在上面的例子中,我有这个数据集的表:

select * from data;
+----+--------+-----------------------+
| id | name   | url                   |
+----+--------+-----------------------+
|  1 | test 1 | www.ya.ru             |
|  2 | test 2 | www.google.com        |
|  3 | test 3 | www.stackoverflow.com |
|  4 | test 1 | www.gmail.com         |
+----+--------+-----------------------+
4 rows in set (0,00 sec)

因此,你在名为&#34的对象中有ID = 4的记录中的数据;测试1"。