2009-09-21 3 views
1

좋아, 내가 쓰기 어떻게조건부로 PHP에서 데이터베이스의 행을 검색하는 방법?

난 단지 클라이언트 정보를 검색하고 싶습니다

하나 개의 필드 전망에 대한 가치와 고객을위한 서로 값의 전체 데이터베이스를 ... ...이 기능??? 다음은 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(); 
    } 
?> 
+0

* 어떻게 작성 했나요? – random

+0

그래 .. 그것은 ... 당신이 // 역사 " "고객 SELECT * FROM " 쿼리 $ 행 등의 ($ SQL)) { \t \t $ 행 [ '이력'] = $ 값; \t \t 경우 ($ 값 == '클라이언트') { \t \t \t echo "1212"; \t \t} \t else { \t \t echo "Failed"; \t \t return; \t \t} \t} \t $ dbh = null; } catch (PDOException $ e) { \t echo "실패 :". $ e-> getMessage(); \t $ dbh-> rollback(); } \t ?> –

답변

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

당연히 비 클라이언트 ro를 반영하지 않습니다. 당신의 견본과 같은 것이지만, 내가 당신의 질문에 대해 이해할 수있는 것에서 이것은 실제로 당신이 원하는 것이 었습니다.

1

특히 여기서는 트랜잭션을 시작하지 않았기 때문에 롤백 할 이유가 없습니다. 이것은 단지 SELECT 일 뿐이므로 롤백 할 것이 없습니다 ... 왜 당신이 무효화하는지 확신 할 수 없습니다 $ dbh. 다른 쿼리 나 애플리케이션 전반에 $ 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(); 
} 
?> 
+0

단 하나의 응답 만 원하는 경우 쿼리 끝에 LIMIT 1을 추가 할 수 있습니다. – Gus

관련 문제