2012-10-15 2 views
0

배열을 mysql 테이블로 업데이트해야합니다. 배열을 mysql 테이블로 업데이트하십시오.

내 배열

[cat2] => Array 
       (
        [0] => 34 
        [1] => 48 
        [2] => 49 
        [3] => 46 
       ) 

내가 34,48,49,46로 내 출력이 범주라는 테이블라는 상점과 열로 이동합니다. 이것은 내가 작성한 코드입니다. $ shop [ 'cat2']는 위에 게시 한 배열을 포함합니다. 도와주세요. implode(",", $shop['cat2'])

당신은 또한 Foreign Keys을 조사 할 수 있습니다 :이 코드는

foreach ($shop['cat2'] as $k => $v) { 
    $query = "UPDATE shops SET categories2=$v"; 
    mysql_query($query); 
    } 
+0

** ** 테이블로 이동한다는 것은 무엇을 의미합니까? – hjpotter92

+3

한 행만 업데이트하려면 WHERE 절이 필요합니다. 이것은 또한 WHERE 절에서 사용하고자하는'상점 '의 ID 나 어떤 것을 꺼내야한다는 것을 의미합니다. –

+0

34,48,49,46을 "category"열, "shops"열의 첫 번째 필드로 옮기고 싶습니다. – user1694724

답변

0

것을 사용하여, 당신의 category 열의 한 행에이 배열의 각 요소를 적용하려면 먼저 shops 테이블의 고유 ID를 가져해야합니다, 그리고 그 위에 루프 고유 식별자 값 업데이트의 WHERE 절 :

foreach() 루프 내에서 mysql_fetch_assoc()을 호출하여 하나의 배열 요소 당 하나의 행을 가져옵니다. 여기에는 상점 당 고유 식별자 인 열 shops.id이 있다고 가정합니다.

0

implode 기능에 열 카테고리의 모든 분야 만 (34)를 유지한다. 외래 키를 사용할 때 join SQL 문을 사용하여 여러 열에서 데이터를 검색 할 수 있습니다. 예제에서와 같이 범주를 하나의 필드로 저장할 때 이것은 불가능합니다.

당신은 그것을위한 새로운 테이블을 필요 : 열 ShopCategory : ShopIDCategoryID, 이러한 열은 각각 당신의 ShopCategory 테이블에 대한 외래 키 관계를 가질 것이다.

Michael Berkowski가 이미 주석에서 지적했듯이 where 절을 사용하지 않으면이 SQL 문은 모든 상점의 범주를 업데이트합니다!

$query = "UPDATE shops SET categories2='".implode(",", $shop['cat2'])."' WHERE id=".$shop;

+0

34,48,49,46을 "category"열, "shops"열, – user1694724

관련 문제