2012-06-14 4 views
0

PDO 명세서와 localhost 및 Google에 대한 내 경험에 대해 지금부터 알고있는 것부터 - 하나의 검색어로 여러 PDO 문을 사용하는 데는 몇 가지 어려움이 있습니다. 예를 들면 다음과 같습니다.하나의 MySQL 쿼리에서 두 개의 PDO 문을 결합하는 방법은 무엇입니까?

이 쿼리에서는 fetch (예)와 같은 간단한 PDO 문을 사용할 수 있습니다. 나는이 같은 PDO 문을 사용할 때 :

$rows = $stmt->rowCount(); 

이 불가능하며 문은 행의 오른쪽 숫자를 반환하지 않습니다.

$stmt = $db_people->prepare("SELECT name FROM people WHERE online=1"); 
$stmt->execute(); 
$rows = $stmt->rowCount(); 

을 그리고 이런 그 후 가져 오기를 부가 : - 나는 다른 방법으로 주위에 그것을하고 열 이름 중 하나 작성하는 경우를 rowCount은 다음과 같이 제대로 작동

$results_people = $stmt->fetch(PDO::FETCH_ASSOC); 

가에 corectly 작동하지 않습니다 이 예제. 내 질문은 - 하나의 단일 쿼리에서 두 개의 서로 다른 PDO 문을 결합하는 방법은 무엇입니까? 고맙습니다.

+1

먼저, 필요한 열 이름 대신'SELECT *'를 사용하지 말아야한다. 귀하의 질문을 올바르게 읽으면 문제도 "고쳐야"합니다. –

+0

'SELECT *'는'SELECT 이름'과 다른'rowCount()'를 어떻게 생성합니까? 나는 전에 이것을 들어 본 적이 없다. – Mike

+0

'Select *'는 항상 1을 반환합니다.'select name'은'rowCount()'함수에서 올바른 수의 열, 즉 100을 반환합니다. 그것이 나의 질문의 핵심이다. – Byakugan

답변

2

답변은 아마도 어떤 작업을 결합하려고 하는가에 달려 있습니다. 예를 들어, PDOStatement::rowCount()SELECT SQL 연산을 결합하려는 경우 rowCount()이 모든 데이터베이스의 SELECT 문에 대해 신뢰할 수 없다고 말하는 PDOStatement::rowCount() description의 경고를 알아두면 유용 할 것입니다.

해결하려는 문제가 특히 SELECT의 결과 행을 계산하는 것으로 제한되는 경우 다른 방법은 PDOStatement::fetchAll()을 사용하고 반환 된 배열의 행을 계산하는 것입니다.

+0

'SELECT * FROM people something = something and something = something ...'fetchAll in 이 경우는 50 개가 있는데 while while()에있는 경우에도 변수'$ results_people [ "name"]'빈 열로 반환됩니다. – Byakugan

+0

'fetchAll()'의 결과 배열이 구조화 된 방식이 아닙니다 . 배열은 열이 아니라 행으로 인덱싱됩니다. 예를 들어'$ results_people [0] [ "name"]'을 시도해보십시오. –

+0

하, 이제는이 두 가지가 결합 할 수있다. 고마워. :) – Byakugan

관련 문제