如何在PHP中有条件地从数据库中检索行?

时间:2009-09-21 02:42:28

标签: php function data-retrieval

好的,我有一个数据库,其中包含一个值为潜在客户的值,另一个为客户......

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

如何编写函数???

更新

这是我试写的脚本:

<?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(); 
    }
?>

2 个答案:

答案 0 :(得分:1)

没有理由在这里进行回滚,特别是因为你还没有启动一个事务,这只是一个SELECT,所以没有什么可以回滚......我也不确定你为什么要归零$胸径。可以在其他查​​询中或整个应用程序中重复使用$ dbh ......

此外,您的select语句应反映您实际需要的数据。如果你需要的只是历史,那么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(); 
}
?>

答案 1 :(得分:0)

根据您的示例脚本,这会做同样的事情,但它会将条件运算符放在数据库层的查询中,而不是放在应用程序层的脚本中:

<?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(); 
    }
?>

当然,它显然不会像你的样本那样反映非客户行,但从我能理解你的问题来看,这就是你真正希望发生的事情。