2011-10-03 2 views
0

전자 상점에서 작업하면서 productpack이 null 인 제품을 DB에서 읽어야합니다.mysql 쿼리의 배열을 사용하여 배열 만들기

DB의 제품 패키지는 다음과 같습니다. 0141312201040111311401060117.

productpack 세트 (null이 아님)가있는 모든 DB 항목을 가져 와서 해당 코드가있는 배열 (0141312201040111311401060117)로 만들려고합니다.

function p_productpacks(){ 

    $productpacks = array(); 
    $pack = array(); 

    $q = mysql_query('SELECT productpack FROM products WHERE productpack <> "";'); 

    while($p = mysql_fetch_object($q)){ 

     $pack = explode(",", $p); 

     $productpacks[] = $pack; 

    } 

    return $productpacks; 

} 
+3

데이터베이스 모델이 올바르게 정상화되지 않은 것 같습니다. 데이터베이스 내부에 작은 마이크로 데이터베이스 로직 *을 작성해야 할 필요성이 느껴질 때마다 뭔가 빠져 있습니다. –

답변

1

당신은 당신은 기존의 팩을 덮어 쓰기하고, 그렇지 않으면 배열을 생성해야합니다

$pack = explode(",", $p->productpack); 

$productpacks[] = $pack; 

자세한 내용은 읽기에 대한 array_pushDocsPHP Arrays Docs (및 mysql_fetch_objectDocs).

+0

이미 완료되었습니다 .. 게시 할 때 그냥 놓친 것 –

+1

그러면 귀하의 질문은 무엇입니까? – hakre

+0

음 ... 여하튼 그것은 작동하지 않는다, 나는 왜 모른다. 배열이 비어 있습니다 –

0

당신은 사용하여 CSV 배열의 모든 productpacks를 얻을 수 있습니다 :

$result = mysql_query("SELECT GROUP_CONCAT(productpack) as productpacks 
         FROM products WHERE productpack <> '' "); 
if ($result) { 
    $row = mysql_fetch_row($result); 
    $productpacks_as_CSV_string = $row['productpacks']; 
} 

만 많은 시간을 절약 데이터베이스에서 하나 개의 행을 얻을 필요가 그런 식으로합니다.

참조 : http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat 객체를 반환하고 당신은 확실히이를 사용하려는 경우, 당신은 같은 것을 할 필요가 .. 문자열 처리와 함께 사용할 수 없습니다 mysql_fetch_object

0

:

$pack=explode(',',$p->productpack); 
$productpacks[]=$pack 

또는를, 대신 좋은 이전 배열을 사용하십시오.

while ($p = mysql_query($q)) 
{ 
    $pack = explode(",", $p['productpack']); 
    $productpacks[] = $pack; 
} 
+0

흠 ..이게 내가하고 싶은 일에 가깝게 보인다 ... 나는 지금 이것을 시험 할 것이다. –