2012-10-16 3 views
0

저는 작은 작업을 가지고 있는데, 여기에는 "상점"이라는 mysql 테이블이 있습니다. 여기에는 "카테고리"열이 있습니다. 카테고리의 각 필드에는 "22,44,33,55,24,33,22"와 같은 다른 값이 들어 있습니다. 이제 해당 필드에서 각 값을 가져 와서 다른 테이블의 "parent"열에서 값을 가져와야합니다. (ID와 연결) 전체 문자열을 선택했지만 각 숫자를 선택하고 싶습니다. 이걸 도와주세요.배열에서 각 요소를 분해하고 선택하십시오.

$db_selected = mysql_select_db("",$con); 
$sql = "SELECT categories from shops"; 
$array = mysql_query($sql,$con); 
while($row=mysql_fetch_array($array)){ 
foreach($row as $value){ 
    $result= explode(" ", $value); 
    foreach($result as $newvalue){ 
    $query="SELECT parent FROM categories where categories.id=$newvalue<br/>"; 
    echo $query; 
    } 
    } 
    } 
mysql_close($con); 
?> 
+3

그리고 이것은 동일한 필드에 쉼표로 분리 된 숫자를 채우는 대신에 관계를 기록하기 위해 별도의'stores_categories' 테이블로 데이터베이스를 정규화하는 이유입니다. – deceze

+0

미안하지만, 내 데이터베이스를 표준화 할 수는 없지만 그것을위한 해결책이 필요합니다 ... – user1694724

+0

MySQL 함수 ['find_in_set'] 확인 (http://dev.mysql.com/doc/refman/5.0/en/string-functions. html # function_find-in-set) – air4x

답변

1

당신은 공간 charater에 기초하여 폭발하고 있지만 귀하의 값은 ,을 기준으로 분해해야합니다. 그럼 그걸 시도하십시오

$result= explode(",", $value); 
foreach($result as $newvalue){ 

    $query="SELECT parent FROM categories where categories.id='$newvalue'"; 
                  //^Quotes the Value 
                  // Remove the <br /> 

    echo $query."<br />"; //Instead add it here and avoid the bug if you decide the run the query 

    // This example is showing mysql_* library but it is deprecated 

    $result = mysql_query($query); 
    $row = mysql_fetch_assoc($result); 
    $parent = $row['parent']; //Now you can something like this 


} 
+0

감사합니다. 어떻게 부모의 가치를 인쇄 할 수 있습니까? – user1694724

+0

@ user1694724, 예제 추가 – Starx

+0

mysql_fetch_assoc()은 매개 변수 1이 리소스 일 것으로 예상하고, 부울이 주어진다면 ... – user1694724

0

은 범주 경우 열은 "22,44,33,55,24,33,22"를 포함하는 다음 확실히 당신의

$result= explode(",", $value); 

는 예를 들어주기 위해 문자열의 쉼표 폭발해야한다 폭발 당신이 22, 44, 33 ...

+0

감사합니다. 어떻게 부모의 가치를 인쇄 할 수 있습니까? – user1694724

+0

우리가 제안한 변경 내용으로 코드를 업데이트 한 경우 요청한대로 쿼리를 인쇄해야합니다. – BugFinder

0

나는 $result= explode(" ", $value); 그것은해야 문제가 여기에있다 생각 $result= explode(",", $value);

+0

감사합니다. 어떻게 부모 값을 인쇄 할 수 있습니까? – user1694724

+0

$ result에서 추출한 값을 사용하여 다른 쿼리를 작성하십시오. – Amirshk

0
$result= explode(",", $value); 

문자열의 형식이 쉼표로 구분되어 있으므로 대신 쉼표로 문자열을 분해해야합니다.

+0

감사합니다. 어떻게 부모의 가치를 인쇄 할 수 있습니까? – user1694724

0

쉼표로 값을 구분합니까?

문제가 데이터베이스 디자인인데도 explode(',', $value)에 ID가 있어야합니다.

+0

감사합니다, 어떻게 부모의 가치를 인쇄 할 수 있습니까? – user1694724

+0

글쎄, 당신은 이미 그 카테고리와 관련이있는 카테고리 ID를 가지고 있습니다. 그 id를 가지고 같은 테이블을 쿼리 할 수는 있지만, 말했듯이, 더 나은 테이블 디자인이 더 나은 접근 방식이어야합니다. –