2014-05-21 3 views
-1

된 table_1PHP에서 두 테이블의 두 필드를 비교하는 방법은 무엇입니까?

ID | Username 
1 John 
2 Mike 
3 Chase 
4 Shane 

Table_2는

ID | Username 
1 | John 
2 | Kenny 
3 | Chase 
4 | Shane 

나는 된 table_1에서 ID을 싶어. 그런 다음 ID표 2 인 것으로 확인하십시오. 그럼 난 필드를 봐야 사용자 이름 두 테이블에 필요합니다. 일치하지 않는 경우 일치하지 않으면 사용자 이름을 으로 업데이트하십시오. 표 2는이고 일부는 이메일과 같습니다.

스크립트를 실행할 때마다 Table_1의 모든 행을 검사해야합니다 .

+4

글을 쓰려고 시도 했습니까? 우리를 보여줄 수 있습니까? – lsouza

+0

당신이 시도한 것을 보여 줌 – kimbarcelona

답변

0

두 테이블에서 일치하는 ID를 찾은 경우 INNER JOIN을 사용해야합니다.

$sql = mysql_query("SELECT table_1.id as id_one,table_1.name as name_one,table_2.name as name_two FROM table_1 INNER JOIN table_2 ON (table_1.id = table_2.id)") or die(mysql_error()); 

    if(mysql_num_rows($sql) > 0) 
    { 
     while($fetch = mysql_fetch_assoc($sql)) 
     { 
       if($fetch['name_one'] != $fetch['name_two']) 
       { 
        // UPDATE table_1 'name' FIELD 

         mysql_query("UPDATE table_1 SET name = '".$fetch['name_two']."' WHERE id = ".$fetch['id_one']) or die(mysql_error()); 

          // DO WHATEVER YOU WANT 
       } 

     } 
    } 
+1

이전의 mysql 함수는 더 이상 사용되지 않습니다. 새 PDO 라이브러리를 사용하는 것이 좋습니다. – Cully

+0

이것이 효과가 있었지만 mysql은 더 이상 사용되지 않으므로 대신 mysqli를 사용합니다. 답을 주셔서 감사 드리며, mysqli를 mysqli로 변경하는 것 외에는 꿈처럼 작동하지 않습니다. 다시 고마워하고 좋은 하루 되세요. – Soulkeeper5

+0

Cully 고맙습니다. 그리고 사용자가 도와 드리겠습니다. :) – webzar

0

MySQL은 약간 녹슬지만 단일 Update 문을 사용하여 수행 할 수 있습니다. 다음은 Table_1의 사용자 이름이 Table_2와 다른 경우에만 사용자 이름을 업데이트해야합니다. 구문을 약간 조정해야 할 수도 있습니다 ...

update Table_1 t1 
join Table_2 t2 
    on t2.id = t1.id 
    and t2.Username <> t1.Username 
set t1.Username = t2.Username; 

필요한 이메일을 생성하려면 먼저 쿼리 할 수 ​​있습니다.

관련 문제