gpt4 book ai didi

php - MySQL 资源、fetch() 和循环

转载 作者:行者123 更新时间:2023-11-29 06:46:05 26 4
gpt4 key购买 nike

在过去的几天里,我很头疼地试图理解这段代码。它是关于从数据库表中检索数据的,这并不难(我使用的是 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 条件内该值必须为真才能执行其中的代码。但是这里有 ($data = $result->Fetch()) 。

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

请帮帮我,我现在正在思考。

最佳答案

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

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

每次您 ->fetch() 时,它都会返回 Statement 指向的当前行。之后它将指针指向下一行(是的,“自动递增”)。

现在,你的代码:

ifwhile 语句中的所有内容都使用松散比较 (==) 求值

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

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

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

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

关于php - MySQL 资源、fetch() 和循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18636529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com