2017-10-16 8 views
0

나는이 데이터를 내 파열 시켰습니다.내파 된 데이터가 다시 한 단어로

$fruit = implode(", ",$_POST["fruit"]); 

이 데이터를 mysql 테이블에 저장했습니다.

ID: 1 
UserID: 5 
Fruit: Apple 

ID: 2 
UserID: 5 
Fruit: Banana 


ID: 3 
UserID: 5 
Fruit: Orange 

문제는 내가 theese의 100처럼 가지고있다 :이 같은 데이터를 저장하고 오히려 내 데이터가 저장이 방법을 원하기가 꽤 바보 실현

ID: 1 
UserID: 5 
chosen: Apple, Banana, Orange 

다음 tablerow이 같이 보입니다 레코드가 이런 방식으로 저장되어 있고 PHP를 사용하는 동안 이전 데이터를 반복하고 INSERT하여 새로운 테이블에 삽입하여 위 예제처럼 보이게 만들면 모든 레코드를 수동으로 변경하지 않아도됩니까? ($mysqli가 연결 임)이 같은

+1

'implode()'의 반대는'explode()'입니다. 그것을 사용하십시오. – Barmar

+0

테이블에서 각 행을 읽고,'explode()'를 사용하여 단어를 분리하고, 새로운 레코드를 루프에 삽입 한 다음 원래 레코드를 삭제하십시오. – Barmar

+0

'선택한'제품의 수가 항상 동일하여 3을 의미합니까? – Moseleyi

답변

1

뭔가 트릭을 수행해야합니다

if($result = $mysqli->query("SELECT * FROM `table1`")){ // select all data from the current table (where the imploded data is) 
    if($stmt = $mysqli->prepare("INSERT INTO `table2` SET `UserID`=?, `Fruit`=?")){ // prepare insertion in the new table (I'm assuming that the ID column is autoincremented) 
     while($data = $result->fetch_array()){ // get data as an array 
      $fruits = explode(', ', $data['chosen']); // explode the fruits 
      foreach($fruits as $fruit){ // loop through the fruits 
       $stmt->bind_param('is', $data['UserID'], $fruit); // bind data 
       $stmt->execute(); // insert row 
      } 
     } 
    } 
} 

나는 실제로 그것을 테스트하지 않았다, 그러나 당신은 그것을 시도 할 수 있습니다.

+0

@ 오늘까지 하젤 크래프트 내가 일했는지 뭐, 하하. 지금까지이 문제를 해결할 수 있었으면 좋겠습니다. – Zeke