Как условно получить строки из базы данных в PHP? - PullRequest
1 голос
/ 21 сентября 2009

Хорошо, у меня есть база данных, полная значений с одним значением поля для потенциальных клиентов и другим для клиентов ...

Я бы хотел получить только информацию о клиентах ...

Как мне написать функцию ???

UPDATE

Вот сценарий, который я пытался написать:

<?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 ]

1 голос
/ 21 сентября 2009

Нет причин делать откат, тем более что вы еще не начали транзакцию, а это просто SELECT, поэтому откатывать нечего ... Я также не уверен, почему вы обнуляете $ ДВГ. Возможно повторное использование $ dbh для других запросов или для всего вашего приложения ...

Кроме того, ваш оператор выбора должен отражать, какие данные вам действительно нужны. Если все, что вам нужно, это история, то лучше всего выбирать историю из клиентов [...].

<?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(); 
}
?>
0 голосов
/ 21 сентября 2009

На основе вашего примера сценария это будет сделано так же, но это поместит условный оператор в запрос на уровне базы данных, а не в сценарии на уровне приложения:

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

Конечно, он, очевидно, не будет отражать строки, не относящиеся к клиенту, как это сделал ваш пример, но из того, что я понял по вашему вопросу, именно это и произошло на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...