이전 글에서 "PDO를 사용하여 PHP 데이터베이스 학습에서 SQL 문을 실행하는 방법은 무엇인가요?"를 가져왔습니다. "에서는 PDO를 사용하여 SQL 문을 실행하는 방법에 대한 지식을 자세히 소개합니다. 이 기사에서는 PHP가 PDO를 사용하여 쿼리 결과를 얻는 방법을 계속 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다!
이전 기사에서는 PDO를 사용하여 SQL 문을 실행하는 방법을 배웠습니다. 다음으로 PDO의 데이터 수집 방법을 살펴보겠습니다. PDO의 데이터 수집 방법은 다른 데이터베이스 확장과 매우 유사합니다.
SELECT 쿼리가 성공적으로 실행되면 PDO 개체의 qurey()
메서드를 사용하거나 prepare()
를 사용하여 결과 집합 개체가 생성됩니다. > 및 execute()
및 기타 메서드를 준비된 문과 결합하여 SELECT 쿼리를 실행하면 결과 집합 개체 PDOStatement가 생성됩니다. qurey()
方法还是使用 prepare()
和 execute()
等方法结合的预处理语句,执行 SELECT 查询都会得到结果集对象 PDOStatement。
通过 PDOStatement 类中的方法就可以获取 SELECT 语句的查询结果,接下来我们就来看一下PDOStatement 类中常见的几个获取结果集数据的方法。
<strong><span style="font-size: 20px;">fetch()</span></strong>
方法
fetch()
方法可以从一个 PDOStatement 对象的结果集中获取当前行的内容,并将结果集指针移至下一行,当到达结果集末尾时返回 FALSE,该方法的语法格式如下:
PDOStatement::fetch([int $fetch_style[, int $cursor_orientation = PDO::FETCH_ORI_NEXT[, int $cursor_offset = 0]]])
其中需要注意的是:
$fetch_style
表示可选参数,用来控制下一行如何返回给调用者。其中这个参数的值必须是 PDO::FETCH_*
系列常量中的一个,如下所示:
PDO::FETCH_ASSOC
表示返回一个关联数组;
PDO::FETCH_BOTH
(默认) 表示返回一个索引数组加关联数组混合的数组
PDO::FETCH_BOUND
表示返回 TRUE,并分配结果集中的值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量
PDO::FETCH_OBJ
表示返回一个属性名对应结果集列名的匿名对象。
PDO::FETCH_CLASS
:返回一个请求类的新实例,映射结果集中的列名到类中对应的属性名。
如果 fetch_style
包含 PDO::FETCH_CLASSTYPE
例如:PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE,则类名由第一列的值决定;
$cursor orientation
表示可选参数,用来确定当对象是一个可滚动的游标时应当获取哪一行。此值必须是 PDO::FETCH_ORI_* 系列常量中的一个,默认为 PDO::FETCH_ORI_NEXT。
$offset
表示可选参数,当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_ABS
时,此值指定结果集中想要获取行的绝对行号;当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_REL
时,此值指定想要获取行相对于调用 PDOStatement::fetch() 前游标的位置。
接下来我们通过示例来看一下使用 fetch() 方法,获取 SELECT 语句的查询结果。示例如下:
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = 'SELECT name,age,sex FROM user WHERE age = \'12\''; $res = $pdo -> query($sql); echo '<pre class="brush:php;toolbar:false">'; while ($row = $res -> fetch(PDO::FETCH_ASSOC)){ print_r($row); } }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
输出结果:
由此我们便通过fetch() 方法完成了从一个 PDOStatement 对象的结果集中获取当前行的内容。$offset
表示可选参数,当参数 $cursor_orientation
设置为 PDO::FETCH_ORI_ABS
时,此值指定结果集中想要获取行的绝对行号;当参数 $cursor_orientation
设置为 PDO::FETCH_ORI_REL
时,此值指定想要获取行相对于调用 PDOStatement::fetch()
前游标的位置。
接下来我们看一下fetchAll() 方法的应用。
<strong><span style="font-size: 20px;">fetchAll()</span></strong>
方法
fetchAll()
方法与上面介绍的 fetch() 方法类似,但是该方法只需要调用一次就可以获取结果集中的所有行,并赋给返回的数组。该方法的语法格式如下:
PDOStatement::fetchAll([int $fetch_style[, mixed $fetch_argument[, array $ctor_args = array()]]])
其中需要注意的是:
$fetch_style
表示可选参数,用来控制返回数组的内容,默认值为 PDO::FETCH_BOTH。该参数的取值与 fetch() 方法相同
$fetch_argument
根据 $fetch_style 参数的值,此参数有不同的意义:
PDO::FETCH_COLUMN
<strong><span style="font-size: 20px;">가져오기()</span></strong>
메소드🎜🎜fetch()
이 메소드는 PDOStatement 객체의 결과 집합에서 현재 행의 내용을 가져오고 결과 집합 포인터를 다음 행으로 이동할 수 있습니다. FALSE에 도달하면 결과 집합의 끝에 반환됩니다. 이 메서드의 구문 형식은 다음과 같습니다. 🎜<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = 'SELECT name,age,sex FROM user WHERE sex = \'男\''; $res = $pdo -> query($sql); $data = $res -> fetchAll(PDO::FETCH_ASSOC); echo '<pre class="brush:php;toolbar:false">'; print_r($data); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>🎜 주의해야 할 사항은 다음과 같습니다. 🎜🎜
$fetch_style
은 선택 사항을 나타냅니다. 다음 줄이 호출자에게 반환되는 방식을 제어하는 데 사용되는 매개변수입니다. 이 매개변수의 값은 아래와 같이 PDO::FETCH_*
일련의 상수 중 하나여야 합니다. 🎜PDO::FETCH_BOTH
(기본값)는 인덱스가 혼합된 배열 반환을 의미합니다. 배열 및 연관 배열 🎜PDO::FETCH_BOUND
는 TRUE를 반환하고 결과 집합의 값을 PDOStatement::bindColumn() 메서드에 의해 바인딩된 PHP 변수에 할당하는 것을 의미합니다🎜 PDO::FETCH_OBJ
는 속성 이름이 결과 세트의 열 이름에 해당하는 익명 객체를 반환하는 것을 의미합니다. 🎜PDO::FETCH_CLASS
: 요청된 클래스의 새 인스턴스를 반환하고 결과 집합의 열 이름을 클래스의 해당 속성 이름에 매핑합니다. 🎜fetch_style
에 PDO::FETCH_CLASSTYPE
이 포함된 경우 예: PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE, 클래스 이름은 다음 위치에 나열됩니다. 🎜🎜$cursor Orientation
값으로 결정되는 첫 번째 열은 개체가 스크롤 가능한 커서일 때 가져와야 하는 행을 결정하는 데 사용되는 선택적 매개 변수를 나타냅니다. 이 값은 PDO::FETCH_ORI_* 시리즈 상수 중 하나여야 하며 기본값은 PDO::FETCH_ORI_NEXT입니다. 🎜🎜$offset
은 선택적 매개변수를 나타냅니다. $cursor_orientation 매개변수가 PDO::FETCH_ORI_ABS
로 설정된 경우 이 값은 가져올 행의 절대 행 번호를 지정합니다. $cursor_orientation 매개변수가 PDO::FETCH_ORI_REL
로 설정된 경우 이 값은 PDOStatement::fetch()를 호출하기 전에 커서를 기준으로 가져오려는 행의 위치를 지정합니다. 🎜🎜다음으로 SELECT 문의 쿼리 결과를 얻기 위해 fetch() 메서드를 예제를 통해 살펴보겠습니다. 예시는 다음과 같습니다. 🎜PDOStatement::fetchColumn([int $column_number = 0])🎜출력 결과: 🎜🎜🎜🎜🎜여기서 fetch() 메서드를 사용하여 PDOStatement 개체의 결과 집합에서 현재 행의 내용을 가져옵니다.
$offset
는 선택적 매개변수를 나타냅니다. $cursor_orientation
매개변수가 PDO::FETCH_ORI_ABS
로 설정된 경우 이 값은 가져오려는 행을 지정합니다. 결과 세트의 절대 행 번호. $cursor_orientation
매개변수가 PDO::FETCH_ORI_REL
로 설정된 경우 이 값은 PDOStatement::fetch() 이전 커서의 위치입니다. 🎜🎜다음으로 fetchAll() 메소드의 적용을 살펴보겠습니다. 🎜🎜<code><strong><span style="max-width:90%">fetchAll()</span></strong>
메서드🎜🎜fetchAll()
이 메서드는 위에서 소개한 fetch() 메서드와 유사하지만 이 메서드는 모든 행을 가져오려면 한 번만 호출하면 됩니다. 결과 세트에 넣고 반환된 배열에 할당합니다. 이 메소드의 구문 형식은 다음과 같습니다. 🎜<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = 'SELECT name,age,sex FROM user'; $res = $pdo -> query($sql); echo '当前行第一列的值为:'.$res -> fetchColumn().'<br>'; echo '当前行第三列的值为:'.$res -> fetchColumn(2).'<br>'; echo '当前行第二列的值为:'.$res -> fetchColumn(1).'<br>'; }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>🎜 주목해야 할 사항은 다음과 같습니다. 🎜🎜🎜
$fetch_style
은 반환된 배열의 내용을 제어하는 데 사용되는 선택적 매개 변수를 나타냅니다. 기본값은 PDO::FETCH_BOTH입니다. 이 매개변수의 값은 fetch() 메소드와 동일합니다🎜🎜$fetch_argument
이 매개변수는 $fetch_style 매개변수의 값에 따라 다른 의미를 갖습니다: 🎜PDO::FETCH_COLUMN
: 0부터 시작하여 인덱스가 지정된 지정된 열을 반환합니다.🎜PDO::FETCH_CLASS
:返回指定类的实例,映射每行的列到类中对应的属性名;
PDO::FETCH_FUNC
:将每行的列作为参数传递给指定的函数,并返回调用函数后的结果。
$ctor_args
表示当 $fetch_style 参数为 PDO::FETCH_CLASS
时,自定义类的构造函数的参数。
接下来我们通过示例来看一下fetchAll() 方法的实际应用,示例如下:
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = 'SELECT name,age,sex FROM user WHERE sex = \'男\''; $res = $pdo -> query($sql); $data = $res -> fetchAll(PDO::FETCH_ASSOC); echo '<pre class="brush:php;toolbar:false">'; print_r($data); }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
输出结果:
由此我们便通过使用 fetchAll() 方法,获取 SELECT 语句的查询结果。$ctor_args
表示当 $fetch_style
参数为 PDO::FETCH_CLASS
时,自定义类的构造函数的参数。
接下来我们看一下fetchColumn() 方法的使用。
<strong><span style="font-size: 20px;">fetchColumn() </span></strong>
方法
fetchColumn()
方法可以获取结果集中当前行指定字段的值,其语法格式如下:
PDOStatement::fetchColumn([int $column_number = 0])
其中需要注意的是:
参数 $column_number
表示的是想从行里取回的列的索引数字。
如果该参数没有取值,也就是如果没有提供值,那么则会从第一列开始获取。
接下来我们通过示例来看一下fetchColumn() 方法的使用,示例如下:
<?php $dsn = 'mysql:host=127.0.0.1;dbname=test'; $user = 'root'; $pwd = 'root'; try{ $pdo = new PDO($dsn,$user,$pwd); $sql = 'SELECT name,age,sex FROM user'; $res = $pdo -> query($sql); echo '当前行第一列的值为:'.$res -> fetchColumn().'<br>'; echo '当前行第三列的值为:'.$res -> fetchColumn(2).'<br>'; echo '当前行第二列的值为:'.$res -> fetchColumn(1).'<br>'; }catch(PDOException $e){ echo '数据库连接失败:'.$e -> getMessage(); } ?>
输出结果:
由此我们便通过使用 fetchColumn() 方法,获取指定字段的值。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
위 내용은 PDO를 사용하여 PHP 데이터베이스 학습에서 쿼리 결과를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!