在过去的几天里,为了理解这段代码,我感到头疼。它是关于从数据库表中检索数据,没有什么困难(我使用的是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,它有一个名为'name‘的列。我试着用这段代码来检索'name‘列中的所有数据。
1-所以我想了解的是什么是$result变量(第6行),我听说它是一个资源。mysql中的资源意味着什么,变量$result中的内容是整个表还是什么?
2-函数fetch()做什么??这是令人困惑的。
3-我从学习php的基本语法中知道的是,在while条件中,为了执行里面的代码,值必须为true。但是这里有($data = $result->Fetch())。
4- fetch()方法是否自动递增??我的意思是为什么它能在while条件下成功地工作,所以它必须一次又一次地递增?
请帮帮忙,我的脑子现在都要炸开了。
发布于 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)
现在,稍微注意一下您的代码:第一行不会输出,因为您不会对第一个获取的结果做任何操作。只需移除
//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-05 21:22:17
1 $result变量是什么
它不是resource。它实际上是PDOStatement class的对象
2 fetch()函数有什么作用??这是令人困惑的。
手册页随时为您服务。只需在浏览器的地址栏中键入PDO fetch,然后单击打开的第一个链接。它非常简单,而且同样强大。
https://stackoverflow.com/questions/18636529
复制相似问题