2012-05-24 3 views
0

나는 올바른 방법을 찾기 위해 몇 시간 동안 검색해 왔습니다. 어떤 도움이라도 대단히 감사하겠습니다.PHP는 mysql 행을 배열로 변환하여 크기를 찾습니다.

정의 된 행에서 NULL이 아닌 필드 수를 세는 방법을 찾고 있습니다.

빈 필드를 건너 뛰고 mysql_query를 사용하여 행을 배열로 변환하고 싶습니다. 그런 다음 배열을 가져 와서 그 크기를 찾고 싶습니다.

mysql_query(SELECT * FROM table) 

$value = array(list, of, values, from, row, in, my, database); 
echo sizeof($value); //value would be 8 

또한 mysql_num_fields()를 사용하여 필드를 계산 시도하지만 결과에서 빈 필드를 차감하는 방법을 모르겠어요.

$test = mysql_query("SELECT * FROM table"); 
$num_rows = mysql_num_fields($test); 
echo $num_rows; //but subtracting all fields that are NULL 

도움을 주셔서 감사합니다.

+0

메신저를 사용하여 요소를 계산 한 다음 필터링 널 카운트가 아닌가? –

+0

NOT NULL 레코드를 필터링해야합니까? – sumit

+0

고대의 MySQL 함수로 새로운 코드 작성을 중단하십시오. MySQLi 대신 PDO를 사용하십시오. –

답변

0

배열을 청소하는 더 쉬운 방법은 콜백 매개 변수없이 PHP의 array_filter 함수를 사용하는 것입니다. 기본적으로이 함수는 false (또는 0), null 또는 ""가 포함 된 요소를 제거하도록 설정됩니다.

//This prunes out 'false', '0', 'null' or '' 
$my_array = array_filter($my_array); 

먼저 저장 한 후 MySQL의 배열에 행과는뿐만 아니라 아니면 그냥 값을 필요합니까, 계속 기능이 MySQL을 통해 식사가 될 수 있는지

$result = mysql_query("SELECT * FROM table"); 

while($row = mysql_fetch_array($result)) 
    { 
    $row = array_filter($row); //remove empty values 
    $num_of_values_non_empty = count($row); 
    echo $num_of_values_non_empty; 
    } 
+0

감사합니다. 코드가 잘 보이고 작동해야하는 것처럼 보입니다. 그러나 결과가 10 개가됩니다 (행 수). 그러나 non_empty 인 필드의 총 개수는 5입니다. 그 이유는 무엇입니까? 도와 주셔서 정말로 고맙습니다! –

+0

'print_r ($ row)'를 해보고 비어있는 행이 적절한 "empty"값으로 저장되어 있는지 확인하십시오. '' ","null "또는'false'로 저장되지 않았을 가능성이 있습니다.이 경우'array_filter()'가 그들을 잡아 내지 못합니다. – StuckAtWork

관련 문제