我有一个问题与我的更新脚本,基本上如果我保持行为mysql_fetch_row,那么它似乎只想插入其他成员到数据库中,但如果我把它改为mysql_fetch_array,然后它插入每个成员两次,但仍然不是数据库中的所有用户。我刚刚显示了下面脚本的开始,因为我非常确定这一定是错误所在。这方面的任何帮助都将是非常棒的。干杯。
$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());
}
}发布于 2011-09-23 06:09:14
在使用mysql_fetch_array时,您不应该需要foreach循环。查询被输入两次的原因是,mysql_fetch_array同时为行数据获取一个关联数组和一个数值数组,因此它同时查看这两个数组并插入数据两次,每个数组一个。
出于这个原因,$member不需要foreach。$member只是被拉取的一行,而不是整个数据集。关联数组将列名作为数组键返回。
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()); 发布于 2011-09-23 06:09:14
mysql_fetch_array返回多个数组(关联数组,数字数组,或者两者都有),这就是为什么它会在你的foreach中插入两次,也可能是你的脚本崩溃的原因。
试试var_dumping $member,看看你可以用什么语法来改进你的foreach
请参阅此处的文档:
http://php.net/manual/en/function.mysql-fetch-array.php
发布于 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。
$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);
//...https://stackoverflow.com/questions/7521993
复制相似问题