0
echo '<td><input type="checkbox" name="items[]" value="' . $row['0'] .  '" /></td>';

嗨,我正在尝试从另一个页面中名为 items 的数组中获取参考号,如上所示,并在表中找到它并打印出参考行,例如“标题,平台 ....”进入另一张桌子,但我似乎无法让它工作......任何帮助都将不胜感激

if (isset($_POST['items'])) {
    $n = count($_POST['items']);

    for($i=0; $i < $n; $i++){
      //  echo $_POST['items'][$i]; 
    }

    $items = array();
    foreach ($_POST['items'] as $item) {
        $items[] = pg_escape_string($con, $item);
    }

    if (!$_SESSION["selectingrows"]) {

        $item_string = "'" . implode("','", $items) . "'";

        $result = pg_query ($con, "SELECT title, platform, description, price FROM CSGames    WHERE 'refnumber' IN ($item_string)");

        while($rows = pg_fetch_assoc($result))
        {
            echo "<tr>";
            echo "<td>" . $rows['1'] . "</td>"; 
            echo "<td>" . $rows['2'] . "</td>"; 
            echo "<td>" . $rows['3'] . "</td>"; 
            echo "<td>" . $rows['4'] . "</td>";
            echo "</tr>";
        }
    }
}
4

1 回答 1

1

一件事,您需要在循环{}之后放置大括号while

这是你正在做的事情:

while($rows = pg_fetch_assoc($result))

    echo"<tr>"; echo "<td>" . $rows['1'] . "</td>"; echo "<td>" . $rows['2'] . "</td>"; echo "<td>" . $rows['3'] . "</td>"; echo "<td>" . $rows['4'] . "</td>";
    echo"</tr>"; 

通过在语句之后不在代码周围放置大括号while,这就是您的代码的真正作用:

while($rows = pg_fetch_assoc($result))
{
    echo"<tr>";
}
echo "<td>" . $rows['1'] . "</td>"; echo "<td>" . $rows['2'] . "</td>"; echo "<td>" . $rows['3'] . "</td>"; echo "<td>" . $rows['4'] . "</td>";
echo"</tr>";

您应该始终使用大括号来定义 while 循环中的代码。

你希望你的代码是这样的:

while($rows = pg_fetch_assoc($result))
{
    echo "<tr>";
    echo "<td>" . $rows['1'] . "</td>"; 
    echo "<td>" . $rows['2'] . "</td>"; 
    echo "<td>" . $rows['3'] . "</td>"; 
    echo "<td>" . $rows['4'] . "</td>";
    echo "</tr>";
}

整齐、正确地格式化您的代码。通过这样做,您的代码更清晰,并且更容易注意到可能出现的上述错误。始终为if, while,for语句使用大括号。当放置一个结束行分号时,;放入一个新的换行符。正确缩进你的代码。像格式化这样的小事情使编码更容易。

现在我可以看到的下一个问题是您从$rows数组中获得的值:

    $rows['1'];
    $rows['2'];
    $rows['3'];
    $rows['4'];

这是试图从具有string$rows的数组中获取一些东西。'1'

通常您通过索引访问数组值,该索引使用从 . 开始的整数0。或者您通过密钥访问它。

你可以试试这个:

    $rows[0];
    $rows[1];
    $rows[2];
    $rows[3];

或这个:

    $rows['title'];
    $rows['platform'];
    $rows['description'];
    $rows['price'];
于 2012-11-29T03:39:12.050 回答