首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用php遍历mysql查询?

如何使用php遍历mysql查询?
EN

Stack Overflow用户
提问于 2010-06-29 13:03:53
回答 3查看 15.2K关注 0票数 3

我试着使用这个函数

代码语言:javascript
复制
        $conn = db_connect();
        while ($newsfeed = $conn->query("select info, username, time from newsfeed ORDER BY time DESC LIMIT 10"))
        {
                    (...)
                     echo "<p>User $newsfeed_username just registerted ".$minutes." min ago </p><br>";

但它只会一遍又一遍地显示最新的争论。我想循环遍历所有来自

代码语言:javascript
复制
select info, username, time from newsfeed ORDER BY time DESC LIMIT 10

按降序排列。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-29 14:42:19

这是这类事情的基本模板,使用内置的php函数(假设使用老式的mysql,但类似于使用其他数据库后端或更高级的库)。在本例中,错误是通过抛出异常来处理的,但这只是一种方法。

  1. 连接到数据库
  2. 确保连接成功,然后运行
  3. 确保查询没有因为某种原因(通常是SQL语法错误)而失败。如果确实失败,请找出原因并处理错误
  4. 检查查询是否至少返回了一行(零行通常是特例)
  5. 循环遍历返回行,执行所需的任何操作。

需要定义异常类(它们是这里唯一的非内置语法,但您不应该抛出普通的异常)。

示例代码:

代码语言:javascript
复制
<?PHP
//try to connect to your database.
$conn = mysql_connect(...);

//handle errors if connection failed.
if (! $conn){
    throw new Db_Connect_Error(..); 
}   

// (try to) run your query.
$resultset = mysql_query('SELECT ...');

//handle errors if query failed.  mysql_error() will give you some handy hints.
if (! $resultset){ 
    // probably a syntax error in your SQL, 
    // but could be some other error
    throw new Db_Query_Exception("DB Error: " . mysql_error()); 
}

//so now we know we have a valid resultset

//zero-length results are usually a a special case    
if (mysql_num_rows($resultset) == 0){   
    //do something sensible, like tell the user no records match, etc....
}else{
    // our query returned at least one result. loop over results and do stuff.
    while($row = mysql_fetch_assoc($resultset)){
        //do something with the contents of $row
    }
}
票数 8
EN

Stack Overflow用户

发布于 2010-06-29 13:49:42

首先,您不希望遍历查询。您希望遍历查询将返回的记录。

第二,你可以这样做:

代码语言:javascript
复制
$conn = db_connect();

$query = mysql_query("SELECT info, username, time FROM newsfeed ORDER BY time DESC LIMIT 10");

while(($row = mysql_fetch_assoc($query)) != NULL) {

    echo "<p>User {$row['username']} just registered {$minutes} min ago</p><br />";

}

NB!假设这个db_connect()建立了一个mysql连接。

票数 3
EN

Stack Overflow用户

发布于 2010-06-29 13:04:58

在进入循环之前,您需要将$conn-query()的结果存储在一个变量中。现在,您使用循环的每次迭代一次又一次地运行查询,这将始终为您提供第一个结果。

示例

代码语言:javascript
复制
$conn = db_connect();
$result = $conn->query("select info, username, time from newsfeed ORDER BY time DESC LIMIT 10");
        foreach ($result as $newsfeed)
        {
                    (...)
                     echo "<p>User $newsfeed_username just registerted ".$minutes." min ago </p><br>";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3137992

复制
相关文章

相似问题

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