rowCount
은 데이터베이스가 MySQL 인 경우 작동합니다. 당신을 위해 효과가 없다는 사실은 당신의 쿼리가 실패하거나 당신이 기대하는 행의 수를 리턴하지 않는다는 것을 나타냅니다. 대부분의 데이터베이스에 대한
, PDOStatement :: rowCount의()은 SELECT 문에 의해 영향을받는 행의 수를 반환하지 않습니다
PDO documentation 행의 수를 찾으려면 다음 방법을 제안한다. 대신 PDO :: query()를 사용하여 원하는 SELECT 문과 동일한 조건자를 사용하여 SELECT COUNT (*) 문을 실행 한 다음 PDOStatement :: fetchColumn()을 사용하여 반환 할 행 수를 검색하십시오.
이 준비된 문뿐만 아니라 PDO::query()
와 함께 작동합니다.
COUNT(*)
또는 *
(또는 더 나은, 필요한 특정 열의 목록) 중 하나가 될 수 있도록 원본 SQL을 템플릿으로 수정할 수 있습니다.
$sql = "SELECT %s FROM publications WHERE pub_journal = ? AND pub_issue = 'CURRENT'";
SQL에 ?
이 있습니다. 문이 execute([$j]);
으로 실행될 때 $j
변수가 바인딩 될 자리 표시 자입니다. 변수를 SQL 문자열 (예 : ...WHERE pub_journal = '$j'...
)에 연결하면 준비된 명령문의 이점을 많이 얻지 못합니다. 당신이 할 수있는, 당신이 카운트 할 필요가 무엇이든 후
$count = $count_stmt->fetchColumn();
:이
, 당신은 준비하고 카운트 쿼리를 실행할 수 있습니다
$count_stmt = $db->prepare(sprintf($sql, 'COUNT(*)'));
$count_stmt->execute([$j]);
은 다음과 카운트를 얻을를 COUNT(*)
대신 원하는 열을 지정하여 실제 SELECT 쿼리를 실행하십시오.
$select_stmt = $db->prepare(sprintf($sql, '*'));
$select_stmt->execute([$j]);
$ result = $ stmt1-> fetchAll(); $ count = count ($ result)를 사용하거나 $ count = $ stmt1-> rowCount()를 사용할 수 있습니다. – happymacarts
그것은 준비된 문장을 사용하는 방법이 아닙니다. –
또한 영향을받는 행이 어떻게 든 변경되었음을 의미합니다. SELECT 쿼리에 의해 행이 변경되지 않습니다. –