0

我有以下似乎不起作用的代码。据我所知,预定义数组的大小都相同——我的表“主页”中有 32 行,其中“用户名”、“图像”和“网站”是三个字段。出于测试目的,用户名是 1 到 32。图像和网站字段是空白的 - 目前(这将改变)。

我的代码是:

 $sorthpge = mysql_query ("SELECT * FROM homepage ORDER BY no DESC LIMIT 32");



$links = array();
$images = array();
$usern = array();



$array_Length_1 = count($usern);

    for ($i=0; $i<$array_Length_1; $i++)
    {
    while ($row_1 = mysql_fetch_assoc ($sorthpge)) {
        $images[$i] = $row_1['image'];
        $links[$i] = $row_1['website'];
        $usern[$i] = $row_1['username'];
        if($images[$i] == ""){
        $images[$i] = "uploads/default.png";
        $links[$i] = "register.php?no=";
        }
        else
        {
        if($images[$i] == "auction"){
        $images [$i] = "uploads/auction.png";
        $links[$i] = "auction.php?no=";
        }
        }
    }
    }

你大概能说出我想要做什么。如前所述,所有“图像”行都是空白的,所以我应该得到“$images[i] =”uploads/default.png”,直到 32 为止。但我的 html 中没有显示任何内容。

只是想知道是否有人可以指出我的代码中的错误。或者,如果我的设置假设有问题。我对php很陌生。提前非常感谢。PS 当我可以使这些基础知识正常工作时,我将翻译为 mysqli。

4

5 回答 5

2

如果这是所有代码,这就是问题所在:

$usern = array();
$array_Length_1 = count($usern);
for ($i=0; $i<$array_Length_1; $i++)
{

数组是空的,所以长度是0你的代码永远不会运行。

无论如何,该循环的目的是什么for?看来您可以将其删除。

于 2012-12-14T13:59:55.423 回答
1

在您的示例代码中,您具有以下内容:

$usern = array();
$array_Length_1 = count($usern);
for ($i=0; $i<$array_Length_1; $i++) {

既然$usern是空的,$array_Length_1就是0- 你的循环永远不会执行。

我不确定你这样做背后的逻辑是什么,所以我不知道建议修复它的正确方法,但是,如果你要for完全删除循环并存储一个单独的增量器,$i代码应该工作正常。

例如,尝试将您的代码更新为以下内容:

$sorthpge = mysql_query ("SELECT * FROM homepage ORDER BY no DESC LIMIT 32");

$links = array();
$images = array();
$usern = array();
$i = 0;
while ($row_1 = mysql_fetch_assoc ($sorthpge)) {
    $images[$i] = $row_1['image'];
    $links[$i] = $row_1['website'];
    $usern[$i] = $row_1['username'];
    if($images[$i] == ""){
        $images[$i] = "uploads/default.png";
        $links[$i] = "register.php?no=";
    } else if($images[$i] == "auction"){
        $images [$i] = "uploads/auction.png";
        $links[$i] = "auction.php?no=";
    }
    $i++;
}
于 2012-12-14T14:00:26.297 回答
0

你上面的代码在我认为的几个地方失败了。这$array_Length_1 = count($usern);没有帮助。for 循环超出了 $array_length 的计数,它总是为空的,因为它还没有被填充......

试试这个:

<?php
    // connection strings here or db include
    $sorthpge = mysql_query ("SELECT * FROM homepage ORDER BY no DESC");

    $links = array();
    $images = array();
    $usern = array();

    $array_Length_1 = count($usern);

    $i = 0;

    while ($row_1 = mysql_fetch_assoc($sorthpge)){
        $images[$i] = $row_1['image'];
        $links[$i] = $row_1['website'];
        $usern[$i] = $row_1['username'];

        if($row_1['image'] == ""){
            $images[$i] = "uploads/default.png";
            $links[$i] = "register.php?no=";
        }
        elseif($row_1['image'] == "auction"){
            $images [$i] = "uploads/auction.png";
            $links[$i] = "auction.php?no=";
        }

        $i++;

    }

?>
于 2012-12-14T14:01:08.177 回答
0
$array_Length_1 = count($usern);

你有问题吗!数组为空,因为您刚刚声明了它

于 2012-12-14T14:01:55.547 回答
0

一个问题是 $array_Length_1 = count($usern); 您的数组 $usern 为空。而您的 for 循环最大值为空。意味着 $i 递增到 0。
$usern = array();
$array_Length_1 = count($usern);
for ($i=0; $i<$array_Length_1; $i++)

并确保您的文件保存为 php 文件,因为您提到您的 html 文件没有显示任何内容。

于 2012-12-14T14:03:24.347 回答