首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP遍历成员时出现的问题

PHP遍历成员时出现的问题
EN

Stack Overflow用户
提问于 2011-09-23 05:58:25
回答 3查看 59关注 0票数 0

我有一个问题与我的更新脚本,基本上如果我保持行为mysql_fetch_row,那么它似乎只想插入其他成员到数据库中,但如果我把它改为mysql_fetch_array,然后它插入每个成员两次,但仍然不是数据库中的所有用户。我刚刚显示了下面脚本的开始,因为我非常确定这一定是错误所在。这方面的任何帮助都将是非常棒的。干杯。

代码语言:javascript
复制
    $result = mysql_query("SELECT member_id FROM members ORDER BY member_id");

    while ($member = mysql_fetch_array($result)){
        foreach ($member as &$member_id){

            $results_query = mysql_query("SELECT driver1 as driver1, driver2 as driver2, driver3 as driver3, driver4 as driver4, team as team, engine as engine, total_points as total FROM members WHERE member_id = '$member_id'")
            or die ("Failed to update" . mysql_error());

$userteam = mysql_fetch_assoc($results_query);

 //this is the bottom of the script after calculations have take place and the insert into the database//

 $results_query = mysql_query("INSERT INTO member_results (member_id, track_id, driver1, driver2, driver3, driver4, team, engine, driver1_points, driver2_points, driver3_points, driver4_points, team_points, engine_points, qualifying_points, race_points, total_points)
            VALUES ('$member_id', '$track', '$userteam[driver1]', '$userteam[driver2]', '$userteam[driver3]', '$userteam[driver4]', '$userteam[team]', '$userteam[engine]', '$userpoints[driver1]', '$userpoints[driver2]', '$userpoints[driver3]', '$userpoints[driver4]', '$userpoints[team]', '$userpoints[engine]', '$userpoints[qualifying]', '$userpoints[race]', '$userpoints[total]')")
            or die ("Failed to update" . mysql_error());

            $userteam["total"] += $userpoints["total"];

            $results_query = mysql_query("UPDATE members SET total_points = '$userteam[total]' WHERE member_id = '$member_id'")
            or die ("Failed to update" . mysql_error());


        }
    }
EN

回答 3

Stack Overflow用户

发布于 2011-09-23 06:09:14

在使用mysql_fetch_array时,您不应该需要foreach循环。查询被输入两次的原因是,mysql_fetch_array同时为行数据获取一个关联数组和一个数值数组,因此它同时查看这两个数组并插入数据两次,每个数组一个。

出于这个原因,$member不需要foreach。$member只是被拉取的一行,而不是整个数据集。关联数组将列名作为数组键返回。

代码语言:javascript
复制
   while ($member = mysql_fetch_array($result)){

                $results_query = mysql_query("SELECT driv1 as drivone, driv2 as drivtwo, 
driv3 as drivthree, driv4 as drivfour, team as teamone, 
eng as engone, total_points as total FROM members WHERE member_id = '$member['member_id']'") // If member_id is the column name for the ID
                or die ("Failed to update" . mysql_error()); 
票数 0
EN

Stack Overflow用户

发布于 2011-09-23 06:09:14

mysql_fetch_array返回多个数组(关联数组,数字数组,或者两者都有),这就是为什么它会在你的foreach中插入两次,也可能是你的脚本崩溃的原因。

试试var_dumping $member,看看你可以用什么语法来改进你的foreach

请参阅此处的文档:

http://php.net/manual/en/function.mysql-fetch-array.php

票数 0
EN

Stack Overflow用户

发布于 2011-09-23 06:15:02

使用mysql_fetch_assoc($result)或mysql_fetch_array($result,MYSQL_ASSOC);

默认情况下,mysql_fetch_array返回:

合并NUM索引( => (0 fieldname ...,1 => ...))、字段名但也合并-in the assoc索引((‘=>’=> ...,‘=>’=> ...))

所以你的代码应该是这样的:**注意已经删除了foreach。

代码语言:javascript
复制
    $result = mysql_query("SELECT member_id FROM members ORDER BY member_id");

    while ($member = mysql_fetch_assoc($result)){
        $member_id = $member['member_id'];
        //foreach ($member as &$member_id){

            $results_query = mysql_query("SELECT driver1 as driver1, driver2 as driver2, driver3 as driver3, driver4 as driver4, team as team, engine as engine, total_points as total FROM members WHERE member_id = '$member_id'")
            or die ("Failed to update" . mysql_error());

$userteam = mysql_fetch_assoc($results_query);
//...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7521993

复制
相关文章

相似问题

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