2012-09-16 6 views
1

로컬 데이터베이스에서 원격 데이터베이스를 업데이트하고 싶습니다. PHP 스크립트를 작성했지만 치명적인 오류가 표시됩니다.로컬 데이터베이스 테이블에서 원격 데이터베이스 테이블 업데이트

원격 데이터베이스와 로컬 데이터베이스는 같은 이름, 동일한 테이블, 동일한 필드를 가지고 있습니다.

이 방법을 시도했지만 작동하지 않습니다.

가능한 모든 방법을 참조하십시오.

+0

오류를 우리에게 보여줄 수 있습니까? 또한 원격 연결이 제대로 정의되어 있습니까? – think123

+0

치명적인 오류 : SQL, thats it. 예 연결이 적절하고 문제가 없습니다. –

+1

오류 처리기에 이것을 시도해보십시오.'또는 die (mysql_error());', 그런 다음 결과를 알려주십시오. – think123

답변

2
"INSERT INTO $tablename SETLECT * from $tablename" 

이 유효하지 않은 SQL 문입니다. SETLECT를 선택하십시오.

+0

잘못 입력했습니다. '중복 항목'1 '에'PRIMARY' 키가 표시됩니다. –

+0

고유 제한이있어서 삽입하려고합니다. 고유 한 제약 조건을 위반하는 두 번 이상 같은 레코드 기존 행을 제거하거나 기본 키에 대해 다른 값을 가진 새 행을 삽입하십시오. –

2

원격 쿼리의 구문 오류 : "INSERT INTO $tablename SETLECT * from $tablename"이 있습니다. SETLECT 대신 SELECT을 의미합니다.

1

교체 코드 :

$tablename="pc_games"; 
$database = 'games'; 

$local_query = "SELECT * FROM $tablename LIMIT 100 OFFSET $remoterows"; 
$local_result = mysql_query($local_query, $connection) or die(mysql_error()); 

while($list=mysql_fetch_array($local_result)) 
{ 
$remote_update=mysql_query("INSERT INTO $tablename SELECT * from $tablename"); 
$remote_update_result = mysql_query($remote_update, $remote_connection) or die (mysql_error()); 
} 

당신이 뭘 잘못했는지,이 라인을 잘못 입력했다 : 대신에 당신이 (아마도)를 사용하여 무엇을 의미하는지, 당신이 SETLECT을 사용

$remote_update=mysql_query("INSERT INTO $tablename SETLECT * from $tablename"); 

공지 사항 : SELECT .

타이핑 오류를 감지하는 데 얼마나 오래 걸리는 지 놀라게됩니다.

모든 오류 처리기가 주석에서 언급 한 것으로 변경되었습니다. 나중에 사용하십시오. 그들은 더 나아 졌어.

업데이트 : 코드로 무엇을 했습니까? 모든

$remote_update=mysql_query("INSERT INTO $tablename SELECT * from $tablename"); 
$remote_update_result = mysql_query($remote_update, $remote_connection) or die (mysql_error()); 

먼저, 결과에 mysql_query를 실행 : 난 그냥 과감한 뭔가를 깨달았다. 둘째, 아무 것도 삽입하지 않습니다. INSERT INTO $tablename. 내 잘못입니까? 아니면 무서운 무언가를하고 계십니까?

+0

, 감사합니다. –

+0

네가 맞습니다. 지금은 오류가 표시되지 않고 원격 데이터베이스에 아무것도 삽입되지 않습니다. 어떻게해야합니까? –

+0

@TallboY ​​그래서 삽입 코드를 어떻게 변경 했습니까? 좀 봐도 될까요? – think123

0
  1. 왜 당신이 절대적으로 필요하지 않은 경우 (while($list=mysql_fetch_array($local_result)) 포함) 결과를 통해 반복된다?

  2. 왜 모든 곳에서 오류 기능을 설정 했습니까? trigger_error("SQL", E_USER_ERROR);.

  3. 왜 데이터베이스에 여전히 mysql_* 방법을 사용하고 있습니까? 단지 넣어

  4. 당신이 또 다른 테이블에서 데이터를 삽입해야하는 경우

    :


mysql_query("INSERT INTO $tablename SELECT * FROM $tablename LIMIT 100 OFFSET $remoterows") or die(mysql_error()); 

과는 함께 할 수.

+0

로컬 데이터베이스에서 원격 데이터베이스를 업데이트하고 싶습니다. 새로운 행이 추가되면 미안하지만, 나는 언급하지 않았다. –

+0

@ TallboY ​​쉽게 달성 할 수 있습니다. 내 편집을 확인하십시오. – hjpotter92

+0

이 방법으로 'PRIMARY'키에 대해 '중복 항목'34 '을 표시합니다. 리모트 데이터베이스에 33 개의 행이 있습니다. 그리고 방금 내 로컬 데이터베이스에 새 행을 삽입했는데, 왜이 오류가 발생합니까? –

관련 문제