2014-07-11 6 views
-1

알프레드 신발의 수를 알고 싶을 때, 나는 항상 "usershoes"테이블에서 알프레드의 테이블과 일치하는 행을 계산합니다.행 수를 계산하거나 계산을 위해 int 필드를 유지 하시겠습니까?

그러나 PDO로 전환하고 행 수를 선택하는 것이 간단하거나 방탄하지 않기 때문에/일관성, 내 방법을 재고하고있다

어쩌면 나는 int 필드를 "users"테이블에 직접 저장하고, 거기에 신발 수를 유지 한 다음 그 길을 따라 해당 숫자를 늘리거나 줄여야한다. ? 사람이 간단한 행이 추가 u없이 선택 쿼리, 을 존재하는 에 계산을위한 견고한 방법이 있으면 기분하지 못했습니다 ..

, 내가

+0

'COUNT (*)'를 사용하여 SELECT 문에서 행 수를 계산하십시오. – TiMESPLiNTER

+0

그 중 일부를 시도했지만 작동시키지 못했습니다. SELECT COUNT (*), shoename, shoesize, shoecolor from usershoes .. 그리고 나서 뭘? fetchColumn? – mowgli

+0

지금 당장 count ($ STH-> fetchAll())에 있습니다. 최선의 해결책은 아니지만 지금까지는 작동합니다. – mowgli

답변

0

SELECT COUNT(*) FROM usershoes 
    WHERE userid="theIdOfTheUser"; 
+0

계산을 위해 별도의 쿼리를 만드는 것이 좋습니다. 그리고 이걸로 행 수를 어떻게 출력합니까? – mowgli

+0

어쨌든 데이터를 표시하려면 모든 데이터가 필요합니다. 나는'PDOS'에서'[PDOStatement :: fetchAll()'] (http://php.net/manual/de/pdostatement.fetchall.php)하고 모든 결과를 포함하는 반환 된 배열을 PHP의'count)'메소드를 호출합니다. – TiMESPLiNTER

-1
같은 것을 시도 알려 MySQL과

, 당신은) FOUND_ROWS를 (사용할 수 있습니다

$db = new PDO(DSN...); 
$db->setAttribute(array(PDO::MYSQL_USE_BUFFERED_QUERY=>TRUE)); 
$rs = $db->query('SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 5,15'); 
$rs1 = $db->query('SELECT FOUND_ROWS()'); 
$rowCount = (int) $rs1->fetchColumn(); 

진짜 살 때 수 (fetchColumn()) 또는 fetchColumn()가 제대로 작동하기를 가져올 수 없습니다 (1 출력 http://php.net/manual/en/pdostatement.rowcount.php#83586

+0

예. php.net : "관련 PDOStatement에 의해 실행 된 마지막 SQL 문이 SELECT 문인 경우 일부 데이터베이스는 해당 문에서 반환하는 행 수를 반환 할 수 있지만, 이 동작은 모든 데이터베이스에 대해 보장되지 않으며 휴대용 응용 프로그램에 의존해서는 안됩니다. " – mowgli

+0

PDOStatement :: rowCount에 대한 코멘트를 인용하고 있습니다. 내 코드가 그것을 사용하지 않음을 주목하십시오. –

+0

왜 downvoted? Mowgli의 반대는 부적합합니다. –

0

:은에서 촬영 행의 총 수없는 15

포함됩니다 수) 그래서

지금 나는 이것을 사용하고, 그리고 그것을 작동합니다

$sql = 'SELECT COUNT(*) as numrows, shoecolor FROM usershoes WHERE userid = ?' 
$STH = $conn->prepare($sql); 
$STH->execute(array($someuseridvar)); 

: 그리고

$row = $STH->fetch(); 

if ($row['numrows'] > 0) { 

    // at least one row was found, do something 

}