【问题标题】:Why if...else stop working after I switched to DBO? [closed]为什么如果...在我切换到 DBO 后停止工作? [关闭]
【发布时间】:2013-01-22 10:41:20
【问题描述】:

我现在有这个代码。

$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 时,我才需要使其不起作用。

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

【问题讨论】:

  • “不工作”到底是怎样的?
  • 什么也没发生。像echo $row... 一样不存在。如果我删除 if-else 部分,echo $row... 有效。
  • PHP 可能会抛出错误,但没有显示出来。我建议打开 PHP 的错误报告,以便您真正看到错误消息。这可能会帮助您找出问题所在。

标签: php sql if-statement pdo


【解决方案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

【讨论】:

    猜你喜欢
    • 2019-02-15
    • 2012-07-21
    • 2015-03-15
    • 2013-04-04
    • 2016-02-07
    • 2021-10-31
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多