2012-02-13 3 views
0

저는 짝수 또는 홀수의 코멘트 ID가 할당되었는지 여부에 따라 사용자의 이름을 표시하는 스크립트를 작성했습니다. 동일한 데이터베이스에있는 두 개의 다른 테이블에서 데이터를 호출합니다. 다음은 테이블 정보입니다.왜이 스크립트가 작동하지 않습니까? (홀수/짝수)

테이블 'comments'에는 commentid, tutorialid, name, date 열이 있습니다. 테이블 'winners'에는 열 pool2, pool3, pool4, pool5, pool6, pool7이 있습니다. 'comments'테이블에는 사용자 입력을 통해 업데이트되는 여러 행이 있습니다. 테이블 '승자'는 일 단위로 무작위로 생성되는 숫자가있는 행이 1 개뿐입니다.

"결과 1"과 "결과 2"를 표시하는 스크립트의 첫 번째 부분이 올바르게 작동합니다. 작동하지 않는 부분은 사용자 이름을 호출하는 부분입니다. Result 1이 선택된 경우 IE에 표시된 결과와 합쳐진 사용자 이름 만 표시하려는 경우 사용자 이름에도 'commentid'가 표시됩니다.

<?php 
$db = mysql_connect('localhost', 'username', 'pass') or die("Database error"); 
mysql_select_db('dbname', $db); 

$query = "SELECT pool FROM winners"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 
    if ($row['pool'] % 2) { 
     echo "<h4>Result 1</h4>"; 
     $names = get_names(1); 
     foreach($names as $name) { 
      echo $name . "<br/>"; 
     } 
    } else { 
     echo "<h4>Result 2</h4>"; 
     $names = get_names(0); 
     foreach($names as $name) { 
      echo $name . "<br/>"; 
     } 
    } 

function get_names($pool_result) 
{ 
    $name_array = array(); 

    $query = "SELECT * FROM comments where mod('commentid',2) = $pool_result"; 
    $result = mysql_query($query); 

    while ($row = mysql_fetch_array($result)) { 
     array_push($name_array, $row['name']); 
    } 

    return $name_array; 
} 
?> 

왜 이것이 작동하지 않는지 알아낼 수 있습니까?

+0

... – Borealid

+0

, 롤, 당신 말이 맞아. 나는 그것을 고쳤다. 그러나 그것은 여전히 ​​나의 문제를 해결하지 못한다. – user1206214

답변

0

추가 따옴표, 당신은 정수로 문자열을 모드 수 없습니다. 다음 대신보십시오 :

$query = "SELECT * FROM comments WHERE commentid % 2 = $pool_result";

다음 스택 질문에서 찍은 : 당신은 두 번 데이터베이스에 연결하는 select row if the "value" % 2 = 1. MOD()

+0

고쳐 주셔서 감사합니다. – user1206214

+0

문제 없습니다. 다행이야! –

+0

아, 지금은 오류 get_names 함수를 다시 선언 할 수 없습니다. 이 스크립트의 변형을 동일한 페이지에서 여러 번 사용할 필요가 있습니다 – user1206214

1

MOD가있는 SELECT 문이 필드를 참조하지 않습니다. 작은 따옴표 대신 역 따옴표를 사용해야합니다. 작은 따옴표는 문자열 상수를 나타내며 상수 결과 집합이됩니다 (mod('commentid',2)은 결과가 0으로 표시됨). 그 결과는 아래와 같습니다 : 문자열로 commentid 취급을 주위

$query = "SELECT * FROM comments where mod(`commentid`,2) = $pool_result"; 
+0

흠, 방금 그 라인에 가능한 모든 조합에 대한 백틱을 넣어 당신의 제안을 시도하고 난 여전히 출력이나 오류가 발생하지 않습니다. – user1206214

+0

@ user1206214 : 명령 행 클라이언트와 같이 독립적으로 쿼리를 실행하면 예상 된 결과를 얻으시겠습니까? –

관련 문제