-4

我现在有这个代码。

$select_links = "SELECT * FROM $table";
if (isset($_POST['link'])) {
    if ($_POST['link'] == '0'){
    }}
else {

$links = $conn->prepare($select_links);
$links->execute();
$links->setFetchMode(PDO::FETCH_ASSOC);  
while($row1 = $links->fetch())
{
echo $row1['name'];
};
}

当我加载没有 _POST 的页面时,echo $row1['name'];可以正常工作。但是,如果我发送 POSTlink=1它不起作用。为什么?仅当 POST 包含link=0.

PS 在我切换到 DBO 之前它可以工作。

4

1 回答 1

1

它不是任何“DBO”,而是您编写的代码。
尽管我只有在重新格式化后才设法理解它的含义。它是这样的:

$select_links = "SELECT * FROM $table";
if (isset($_POST['link'])) {
    if ($_POST['link'] == '0'){
        // do nothing
    }
} else {
    $links = $conn->prepare($select_links);
    $links->execute();
    $links->setFetchMode(PDO::FETCH_ASSOC);  
    while($row1 = $links->fetch())
    {
        echo $row1['name'];
    }
}

因此,当您设置 POST link=1 时,它会通过isset($_POST['link'])检查,然后不会执行其他代码。

很可能你的意思是这样的

if (!empty($_POST['link'])) {
    $select_links = "SELECT * FROM $table";
    $links = $conn->prepare($select_links);
    $links->execute();
    $links->setFetchMode(PDO::FETCH_ASSOC);  
    while($row1 = $links->fetch())
    {
        echo $row1['name'];
    }
}

如果您需要一些其他逻辑 - 没问题,请编写您想要的任何行为。
只需阅读手册并测试您尝试的所有内容。
...但是好吧,这对新手来说可能很难:

if (!isset($_POST['link']) || $_POST['link']) {

方法

IF $_POST['link'] is NOT set OR $_POST['link'] NOT equal to 0
于 2013-01-22T11:02:12.637 回答