【问题标题】:How to Conditionally Retrieve Rows from the Database in PHP?如何在 PHP 中有条件地从数据库中检索行?
【发布时间】:2010-11-29 23:21:32
【问题描述】:

好的,我有一个充满值的数据库,其中一个字段值用于潜在客户,另一个字段值用于客户...

我只想检索客户信息...

函数怎么写???

更新

这是我尝试编写的脚本:

<?php 
    try { 
        $sql = "SELECT * FROM clients" // WHERE history" or die(mysql_error()); 

        foreach ($dbh->query($sql) as $row) { 
            $row['history'] = $value; 

            if ($value == 'clients'){           
                echo "1212"; 
            } else { 
                echo "Failed"; 
                return; 
            } 
        } 

        $dbh = null; 
    } catch (PDOException $e) { 
        echo "Failed: " . $e->getMessage(); 
        $dbh->rollback(); 
    }
?>

【问题讨论】:

  • 你是如何尝试编写函数的?
  • 是的......看起来像这样......你可以说我是 php 新手...... query($sql) as $row) { $row['history'] = $value; if ($value == 'clients'){ echo "1212"; } else { echo "Failed"; return; } } $dbh = null; } catch (PDOException $e) { echo "Failed: " . $e->getMessage(); $dbh->rollback(); } ?>

标签: php function data-retrieval


【解决方案1】:

根据您的示例脚本,这将执行相同的操作,但会将条件运算符放在数据库层的查询中,而不是应用层的脚本中:

<?php 
    try { 
        $sql = "SELECT * FROM clients WHERE history = 'clients'" // WHERE history" or die(mysql_error()); 

        foreach ($dbh->query($sql) as $row) {                       
            echo "1212";  
        } 

        $dbh = null; 
    } catch (PDOException $e) { 
        echo "Failed: " . $e->getMessage(); 
        $dbh->rollback(); 
    }
?>

当然,它显然不会像您的示例那样反映非客户端行,但根据我对您的问题的理解,这是您真正希望发生的事情。

【讨论】:

    【解决方案2】:

    没有理由在这里进行回滚,特别是因为您还没有开始事务,而这只是一个 SELECT,所以没有什么可以回滚...我也不确定您为什么要取消 $分贝。可以将 $dbh 重用于其他查询,或者在整个应用程序中重用...

    此外,您的选择语句应该反映您实际需要的数据。如果您只需要历史记录,那么 SELECT history FROM clients[...] 是最好的。

    <?php 
    try { 
        $sql   = "SELECT * FROM clients WHERE history = 'clients'"; 
        $query = $dbh->prepare($sql);
    
        $query->execute();
    
        while($row = $query->fetch())
        {
          if($row['history'] == 'clients'){
            echo '1212';
          }
        }
    } catch (PDOException $e) { 
        echo "Failed: " . $e->getMessage(); 
    }
    ?>
    

    【讨论】:

    • 请注意,如果您只想要一个响应,您可以在查询末尾添加 LIMIT 1。
    猜你喜欢
    • 2018-11-21
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2016-11-19
    相关资源
    最近更新 更多