首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL资源、fetch()和循环

问MySQL资源、fetch()和循环
EN

Stack Overflow用户
提问于 2013-09-05 20:37:06
回答 2查看 98关注 0票数 1

在过去的几天里,为了理解这段代码,我感到头疼。它是关于从数据库表中检索数据,没有什么困难(我使用的是mysql)。但我在试着理解代码。代码如下:

代码语言:javascript
复制
<?php
include 'PDOconnect.php';
//Query
$result = $connection->query('SELECT * FROM video_games');
//Fetch
$data = $result->Fetch();

while ($data = $result->Fetch()) {
echo $data['name']."<br />";
}

?>

首先让我解释一下,第二行包含我使用PDO方式连接的数据库的连接代码。连接正常。我的表名为video_games,它有一个名为'name‘的列。我试着用这段代码来检索'name‘列中的所有数据。

1-所以我想了解的是什么是$result变量(第6行),我听说它是一个资源。mysql中的资源意味着什么,变量$result中的内容是整个表还是什么?

2-函数fetch()做什么??这是令人困惑的。

3-我从学习php的基本语法中知道的是,在while条件中,为了执行里面的代码,值必须为true。但是这里有($data = $result->Fetch())。

4- fetch()方法是否自动递增??我的意思是为什么它能在while条件下成功地工作,所以它必须一次又一次地递增?

请帮帮忙,我的脑子现在都要炸开了。

EN

回答 2

Stack Overflow用户

发布于 2013-09-05 20:49:05

$result不是一种资源。这是个PDOStatement。请参阅文档:http://www.php.net/manual/en/pdo.query.php

一旦执行了PDOStatement (使用->query()自动执行),该语句就会保存数据库返回的结果。

每次执行->fetch()时,它都会返回该语句所指向的当前行。之后,它将指针指向下一行(所以是的,‘自动递增’)。

现在,您的代码如下:

if和while语句中的所有内容都使用松散比较(==)进行计算

if ( $a )实际上检查或$a == true。

$data = $result->fetch()只是将一个值设置为$data。然后while检查或$data == true。如果是这样,它就会做它必须做的事情。(有关php == vs === operator中的比较的更多信息,请参阅php)

现在,稍微注意一下您的代码:第一行不会输出,因为您不会对第一个获取的结果做任何操作。只需移除

代码语言:javascript
复制
//Fetch
$data = $result->Fetch();

所以你的代码会变成:

代码语言:javascript
复制
<?php
include 'PDOconnect.php';
//Query
$result = $connection->query('SELECT * FROM video_games');

while ($data = $result->Fetch()) {
echo $data['name']."<br />";
}

关于PDO的一个很好的教程:http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

票数 1
EN

Stack Overflow用户

发布于 2013-09-05 21:22:17

1 $result变量是什么

它不是resource。它实际上是PDOStatement class的对象

2 fetch()函数有什么作用??这是令人困惑的。

手册页随时为您服务。只需在浏览器的地址栏中键入PDO fetch,然后单击打开的第一个链接。它非常简单,而且同样强大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18636529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档