为什么如果......切换到DBO后别停止工作?

时间:2013-01-22 10:41:20

标签: php sql if-statement pdo

我现在有了这个代码。

$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'];有效。但是,如果我发送POST link=1它不起作用。为什么?只有在POST包含link=0时,我才能使它不起作用。

P.S。它在我转向DBO之前有效。

1 个答案:

答案 0 :(得分: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