2012-03-12 3 views
1

나는 fetch_array에 간단한 문제가있다. 나는 테이블 1에서 x1과 x2를 읽는 것을 좋아한다. 두 배열 모두 다른 테이블 B의 다른 필드를 +1 할 카운터를 필요로한다. 나는 다음과 같은 코드를 작성했지만 작동하지 않으며 나는 어디에서 실수인지 모른다. 어쩌면 누군가 나를 도울 수 있습니다. 고마워.fetch_array를 사용하여 PHP로 배열을 얻는 방법

$get_counter = "SELECT x1, x2 FROM tablename(A) WHERE id='$id'"; 
     $result2 = mysqli_query($db, $get_counter); 

     $row = $result2->fetch_array(MYSQLI_ASSOC); 

     $counter = "UPDATE tablename(B) SET xy=xy + 1 WHERE x1=$row["x1"] AND x2=$row["x2"]"; 
     $result3 = mysqli_query($db, $counter); 
+0

어떻게 작동하지 않습니까? – hakre

+0

'tablename (A), tablename (B)'는 유효한 구문이 아니기 때문에 그냥 여기에 자리 표시 자라고 가정합니다. –

답변

1
 

$counter = "UPDATE tablename(B) SET xy=xy + 1 WHERE x1='".$row["x1"]."' AND x2 ='".$row["x2"]."'"; 
 
+0

안녕하세요. 도와 주셔서 고마워요. . 나는 그것을 그렇게하기 위해 그것을해야했다. 여러분 모두에게 감사드립니다. 최고의 소원 – John

2

$counter에 귀하의 견적이 잘못되어 있습니다. {} 안에 큰 따옴표로 묶은 문자열 안에 배열이나 객체를 둘러싸는 것이 좋습니다. 두 번째 쿼리 내부에서 따로 x1, x2를 사용하지 않을 경우

$counter = "UPDATE tablename(B) SET xy = (xy + 1) WHERE x1={$row['x1']} AND x2={$row['x2']}"; 

그러나, 당신은 하나 개의 쿼리와 JOIN이 작업을 수행 할 수 있습니다. 이렇게하면 첫 번째 쿼리 및 호출 가져 오기가 필요 없습니다.

UPDTE 
tablenameb B JOIN tablenamea A ON B.x1 = A.x1 AND B.x2 = A.x2 
SET xy = (xy + 1) 
WHERE A.id='$id' 
1

SQL에 오류가 있으며 스크립트에서 SQL 오류를 확인하지 않습니다.

이 :

$row = $result2->fetch_array(MYSQLI_ASSOC); 

이되어야한다 :

if ($result2 === false) { 
    printf("Invalid query: %s\nWhole query: %s\n", mysqli_error(), $get_counter); 
    exit(); 
} 

$row = $result2->fetch_array(MYSQLI_ASSOC); 

은 $ result2 여기에 확인하는 방법을 알아보십시오, 그것이 실패 할 경우 SQL 오류를 인쇄하는 방법.

+0

나는 그것을 모든 쿼리에 추가했습니다. 마지막으로 result3에 실수를 표시했습니다. 고마워. – John

+0

도움이 되었기 때문에 기쁩니다. [질문 닫기] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – jpic

관련 문제