2012-07-17 8 views
0

sqlite3 및 "num_rows"에 문제가 있습니다. 나는 mysql과 같은 결과의 num_rows를 요구할 수 없다. 이제 SELECT 쿼리를 자동화하여 rowcount를 요청하지 않을 것이다. 두 패턴간에 모두 바꿀 수있는 방법이 있습니까?preg_replace가 SQL 쿼리 문자열을 변경합니다.

SELECT date,name,etc FROM myTable WHERE gender=1 
// to 
SELECT count(*) FROM myTable WHERE gender=1 

처럼 나는 모든 COUNT (*)가 SELECT 사이 FROM 교체해야합니다. 이 작업을 preg_replace 할 수 있습니까?

답변

2

예를 들어 간단하지만 모든 쿼리 구문에서 작동하지 않을 것입니다.

PHP 코드 (모르는 당신이 사용합니까 언어) :하지만 그것을 시도해야

$count_sql = preg_replace('/^(SELECT)\\s+.*?\\s+(FROM.*)$/s', '$1 count(*) $2', $select_sql); 

을하지만 생각의 num_rows 일을 찾을 수있는 더 우아한 방법이있다. 다음과 같은 하위 쿼리를 사용할 수 있습니다.

SELECT COUNT(*) FROM (*** original query here ***) 

매우 효율적이지는 않지만 쿼리 구문을 다룰 필요는 없습니다.

+0

그 덕분에 더 우아한 방법! 나는 일하는 것이 머리 속의 머리카락을 당분간 당겨 버리는 것을 전혀 몰랐습니다. – ChrisR

관련 문제