1

在过去的几天里,我在试图理解这段代码时很头疼。这是关于从数据库表中检索数据并不难(我正在使用 mysql)。但我试图理解代码。这是代码:

<?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,它有一个名为“名称”的列。我正在尝试使用此代码从“名称”列中检索所有数据。

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

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

3-我通过研究 php 的基本语法知道的是,在 while 条件内,值必须为 true 才能执行里面的代码。但这里有 ($data = $result->Fetch()) 。

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

请帮助我的想法现在正在吹。

4

2 回答 2

1

1 什么是 $result 变量

它不是资源。它实际上是PDOStatement类的对象

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

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

于 2013-09-05T13:22:17.210 回答
1

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

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

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

现在,您的代码:

内部ifwhile语句中的所有内容都使用松散比较(==)进行评估

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

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

现在,对你的代码做一点评论:第一行没有输出,因为你没有对第一个获取的结果做任何事情。只需删除

//Fetch
$data = $result->Fetch();

所以你的代码会变成:

<?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/

于 2013-09-05T12:49:04.620 回答