循环结果不稳定

时间:2012-08-24 04:43:19

标签: php while-loop

我创建了一个while循环,为用户生成随机图像。每次加载页面时,while循环都会生成随机数量的图像。我想它显示10但它将产生3-10张图像。我检查了数据库,user_id对于每个条目都是唯一的。我不知道它为什么要这样做。代码有什么问题?我还会接受一个可以指向方向(教程链接)的答案,以更好的方式重写此代码。

<?php

$query = mysql_query("SELECT `user_id` FROM  `users` ORDER BY RAND() LIMIT 0, 10");

$r = 1;

while ($results_row = mysql_fetch_assoc($query))

    {   

$var_1 = $results_row['user_id']; 

    $getting_essentials = mysql_query("SELECT 

    `band_name`,`donated_money`,`donated_time` FROM `create_project` WHERE `user_id` = 

    $var_1");

    $getting_results = mysql_fetch_assoc($getting_essentials);

$bandsname = $getting_results['band_name'];

if (isset($bandsname) === true) {       

$donatedmoney = $getting_results['donated_money'];

$donated_time = $getting_results['donated_time'];   

$var_2 = username_from_user_id($var_1); 

$image_name = 'images/' . md5($var_2) . '_' . $var_1;       

    echo '<a href="' . $var_2 . '"><img src="' . $image_name . '" class="'.$r.'" 

    width="300" height="185"/></a>';

} 
$r++;
}

?>

2 个答案:

答案 0 :(得分:1)

我看到了一些潜在的问题。

首先,var_2是什么?它似乎没有设置在任何地方。

其次,您可以获得与表中唯一用户ID一样多的图像。在我看来,这是一种尝试获取十张图片的奇怪方式。

第三,使用用户ID构建您用于图像的实际文件名。很可能并非所有文件都存在。

检查最后一点的方法是在浏览器中执行“查看源”操作。

可能你总是得到123张图片(假设你有123个不同的用户ID),但其中一些不存在。

作为一个低级调试练习,您可以插入代码来回显调试语句(HTML格式),这样您就可以看到幕后发生了什么。这通常是确定问题的最快方法。换句话说,用以下内容来代码:

$bandsname = $getting_results['band_name'];     # Existing line
echo 'bandsname is "' . $bandsname . '".<br>';  # new line

通过这样做并检查输出,它会比尝试对代码进行静态分析更明显。

答案 1 :(得分:0)