2011-02-02 4 views
0

테이블 personsMySQL에서 PHP로 루프 내에서 루프하는 방법은 무엇입니까?

name | details 
------------------ 
mathew| tax,home,car,insurance 
john | job,tax,employ 
neil | tax,home,car,job 
yancy | consultant,rent,family 
lucy | home,car,insurance 

나는이 테이블을 통해 루프를 원하는라는 persons1

name | names 
------------------ 
mathew| neil,lucy,john 
neil | mathew,lucy,john 
john | mathew,lucy,neil 

지금까지 나는 다음과 같은 있지만 작동하지 코딩 다른 테이블에 대한 자세한 다음 저장 결과 검색

mysql_connect("localhost", "root", "pass"); 
mysql_select_db("database"); 
$query = "SELECT * FROM persons"; 
$result = mysql_query($query); 
while($r = mysql_fetch_array($result)) 
{ 
    $exp = explode(",",$r["details"]); 
    $sql = mysql_query('SELECT * FROM persons WHERE MATCH (tags) AGAINST ("+$exp[0]" "+$exp[1]" "+$exp[2]" IN BOOLEAN MODE)'); 
    $result = array(); 
    while($row = mysql_fetch_assoc($sql)) 
    { 
     array_push($result,$row['name']); 
     $name = implode(",",$result); 
     mysql_query("INSERT INTO person_new (name,names) VALUES (\"".$r["name"]."\", \"".$name."\")"); 
    } 
} 

아무도 내 코드에 대한 내 질문에 대한 대답을 줄 수 없다는 것이 매우 슬픈 일입니다. 내 설계를 들여다 보지 않고 내 코드를 살펴보고 내가 실수 한 곳을 말해달라고 요청합니다. 나는보고있는 것과 다른 뭔가를하고 있습니다. 그래서 내 코드를 확인해야합니다.

+0

작동하지 않습니까? 오류 메시지가 있습니까? 그리고 당신의 타이틀을 바꾸십시오. –

+3

테이블 디자인을 표준화하십시오. 셀당 하나 이상의 신중한 데이터를 가지고 있다는 끔찍한 생각입니다. –

답변

0

먼저 에 무엇을 말하면 좋을까요?가 작동하지 않습니다.

내가 (중 적어도 하나)은 오류 (들) 여기 의심했다 가졌 : 이것은 문자 그대로 당신에게 당신이 원하지 않는 어떤 가능성이 쿼리 AGAINST ("+$exp[0]" "+$exp[1]" "+$exp[2]" IN BOOLEAN MODE)을 줄 것이다

'SELECT * FROM persons WHERE MATCH (tags) AGAINST ("+$exp[0]" "+$exp[1]" "+$exp[2]" IN BOOLEAN MODE)' 
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

. 이것은, 좋은 데이터베이스 구조하지 그래도 난 @Dolph와 함께 해요

'SELECT ... AGAINST ("+' . $exp[0] . '" "+' . $exp[1] . '" "+' . $exp[2] . '" IN BOOLEAN MODE)' 

또는

"SELECT ... AGAINST (\"+$exp[0]\" \"+$exp[1]\" \"+$exp[2]\" IN BOOLEAN MODE)" 

당신이 인 경우 : 당신은 문자열을 연결하거나 이중 인용 문자열을 사용합니다 어쨌든 나중에 다시 설계하려고 할 때 ("나중에"라고 말하면주의해야합니다.), 지금 당장해야합니다.

5

database normalization을 통해 문제가 해결 될 수 있습니다.

tax,home,car,insurance 같은 데이터를 단일 열에 저장 한 다음 검색하여 구문 분석하면 매우 나쁜 생각입니다.

+0

동의하지만이 방법이 필요합니다 –

+1

강한 단어입니다. – Dolph

+1

@aron, 아니요, 이런 식으로 필요 없습니다. 디자인 문제가 있습니다. 그것을 무시하면할수록, 더 많이 구석에 페인트하게됩니다. –

관련 문제