0

我创建了一个为用户生成随机图像的 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++;
}

?>
4

2 回答 2

1

我看到了几个潜在的问题。

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

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

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

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

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

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

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

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

于 2012-08-24T04:49:53.287 回答
0

以下帖子将为您的答案提供解决方案 http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-从表/

于 2012-08-24T04:51:59.627 回答