PDO 的 fetch 模式功能实在是太方便了,但每次要产生想要的结果都要试太麻烦了,这里列出可能的组合。
<?php $dbAdapter = new PDO("mysql:host=localhost;dbname=test", "root", "1234"); $dbAdapter->exec("SET NAMES 'utf8';"); $data = $dbAdapter->query(" SELECT id, name, method FROM category ")->fetchAll(PDO::FETCH_ASSOC); //var_dump($data); /* array( array( 'id' => '1', 'name' => 'HBO', 'method' => 'service', ), array( 'id' => '2', 'name' => '本周新片', 'method' => 'movie', ), array( 'id' => '3', 'name' => '热映中', 'method' => 'movie', ), ) */ $data = $dbAdapter->query(" SELECT name, method FROM category ")->fetchAll(PDO::FETCH_COLUMN); //var_dump($data); /* array( 'HBO', '本周新片', '热映中', ) */ $data = $dbAdapter->query(" SELECT id, name, method FROM category ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC); //var_dump($data); /* array( '1' => array( 'name' => 'HBO', 'method' => 'service', ), '2' => array( 'name' => '本周新片', 'method' => 'movie', ), '3' => array( 'name' => '热映中', 'method' => 'movie', ), ) */ $data = $dbAdapter->query(" SELECT method, id, name FROM category ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC); //var_dump($data); /* array( 'service' => array( 'id' => '1', 'name' => 'HBO', ), 'movie' => array( 'id' => '3', 'name' => '热映中', ), ) */ $data = $dbAdapter->query(" SELECT id, name, method FROM category ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_COLUMN); //var_dump($data); /* array( '1' => 'HBO', '2' => '本周新片', '3' => '热映中', ) */ $data = $dbAdapter->query(" SELECT method, name, id FROM category ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_COLUMN); //var_dump($data); /* array( 'service' => 'HBO', 'movie' => '热映中', ) */ $data = $dbAdapter->query(" SELECT method, id, name FROM category ")->fetchAll( PDO::FETCH_ASSOC | PDO::FETCH_GROUP); //var_dump($data); /* array( 'service' => array( array( 'id' => '1' 'name' => 'HBO' ), ) 'movie' => array( array( 'id' => '2' 'name' => '本周新片' ), array( 'id' => '3' 'name' => '热映中' ), ) ) */ $data = $dbAdapter->query(" SELECT method, name, id FROM category ")->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_COLUMN); //var_dump($data); /* array( 'service' => array( 'HBO' ), 'movie' => array( '本周新片' '热映中' ), ) */ $data = $dbAdapter->query(" SELECT id, name, method FROM category ")->fetchAll(PDO::FETCH_OBJ); //var_dump($data); /* array( stdClass{ public $id = '1'; public $name = 'HBO'; public $method = 'service'; }, stdClass{ public $id = '2'; public $name = '本周新片'; public $method = 'movie'; }, stdClass{ public $id = '3'; public $name = '热映中'; public $method = 'movie'; }, ) */ class Category_1 {} $data = $dbAdapter->query(" SELECT id, name, method FROM category ")->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Category_1"); //var_dump($data); /* array( Category_1{ public $id = '1'; public $name = 'HBO'; public $method = 'service'; }, Category_1{ public $id = '2'; public $name = '本周新片'; public $method = 'movie'; }, Category_1{ public $id = '3'; public $name = '热映中'; public $method = 'movie'; }, ), */ class Category_2 { public $name; public $method; public function __construct() {} public function __set($name, $value ){} } $data = $dbAdapter->query(" SELECT id, name, method FROM category ")->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Category_2"); //var_dump($data); /* array( Category_2{ public $name = 'HBO'; public $method = 'service'; }, Category_2{ public $name = '本周新片'; public $method = 'movie'; }, Category_2{ public $name = '热映中'; public $method = 'movie'; }, ) */
我无法弄清楚prefetch_related('arg_set')和prefetch_related('arg')之间的区别。 有时prefetch_related不工作时,使用参数'arg'甚至'arg_set'工作。 我已经搜索了整个docs.djangoproject.com,但至少,我不能在下面两页找到相关文件。https://docs.djangoproject.com/en/2.1/r
如下代码为什么输出的结果不是1,2,3,4? 而是输出了错误的结果:1803629872 77304476 1803629872 0
主要内容:【脑筋急转弯】%ds输出什么,【拓展】如何在字符串中书写长文本在《 第一个C语言程序》一节中,我们使用 puts 来输出字符串。puts 是 output string 的缩写,只能用来输出字符串,不能输出整数、小数、字符等,我们需要用另外一个函数,那就是 printf。 printf 比 puts 更加强大,不仅可以输出字符串,还可以输出整数、小数、单个字符等,并且输出格式也可以自己定义,例如: 以十进制、八进制、十六进制形式输出; 要求输出的数字占 n
本文向大家介绍JavaScript中的document.referrer在各种浏览器测试结果,包括了JavaScript中的document.referrer在各种浏览器测试结果的使用技巧和注意事项,需要的朋友参考一下 前段时间需要通过 JavaScript 获取页面的来源,这个操作很简单,使用 document.referrer 就可以获取到了。不过,实际应用中还是有很多意外情况,这儿简单整理一
我有一个包含1600万条记录的MySql表,由于一些迁移工作,我正在读取整个MySql表。 以下代码用于在MySql中流式传输大型结果集 但这是一次流式传输一个结果,这是否意味着我们每行都命中MySql服务器 在使用流时,我们可以设置如下语句:setFetchSize(1000); 我想减少到服务器的往返次数,同时流式传输大型 ResultSet
所需输出: 我如何使用递归来完成这件事呢?我的代码思想是: 我对在if语句和system.out.println()中返回什么感到困惑,因为数字5不会随着它的停留而减少/增加例如,它将垂直停留5,我该如何处理这个问题呢?我的代码更多的是一个说明,只是为了证明我在做这件事。