2014-01-13 3 views
1

하는 동안 다음과 같은 출력이 : "ID = 12345"PHP와 혼동 루프

12345: 1 
1234: 7 
1234: 7 
1234: 6 
1234: 4 

그것은 끝나는 URL에서 생산됩니다. ID가 데이터베이스에 있거나 ID가 없을 때 추가 될 때 id가 1 씩 증가합니다. 1234에 의해 생성 된 최종 결과는 맞지만, 1234의 이전 결과가 생성되지 않게하려면 어떻게해야합니까?

while ($row = $database->row()->fetch()) { 
    $id = $row["id"]; 
    $count = $row["count"]; 

    if ($id != $_GET["id"]) { 
     $insert = new MySQLConnect(); 
     $insert->query("INSERT INTO links VALUES (:id, 1);"); 
     $insert->run(array("id" => $_GET["id"]); 
    } elseif ($id == $_GET["id"]) { 
     $update = new MySQLConnect(); 
     $update->query("UPDATE links SET count=count + 1 WHERE id=:id;"); 
     $update->run(array("id" => $_GET["id"]); 
    } 

} 

편집 :

function display_data() 
{ 
    $display = new MySQLConnect(); 
    $display->query("SELECT * FROM links;"); 
    $display->run(); 

    while ($row = $display->row()->fetch()) { 
     $id = $row["id"]; 
     $count = $row["count"]; 

     $GLOBALS["output"] .= $id . ": " . $count . "<br/>"; 
    } 

} 
+5

그냥 보조 노트로 전송 된 ID를 업데이트 "하면서"무엇 내가'? id = '', '')에 갔다면 일어날 것입니다. DROP TABLE 링크; -'? –

+1

while 루프가하는 일을 알고 있습니까? foreach와 while의 차이점은 무엇입니까? – pregmatch

+0

[Bobby Tables주의] (http://xkcd.com/327/) – gtgaxiola

답변

0

필요하지 않은 방금 만들려면/매개 변수

$useId = (int)$_GET["id"]; 
$insert = new MySQLConnect(); 
$insert->query("INSERT INTO `links` (`id`, `count`) VALUES ('$useId', 1) ON DUPLICATE KEY UPDATE `count` = `count` + 1"); 
$insert->run(); 
+0

당신의 솔루션을 시도했지만 데이터베이스에 새로운 항목이 계속 나타나고 아무 것도 증가하지 않습니다. 12345 : 250 12345 : 144 12345 : 1 – user1408643

+0

ID 필드 – cornelb

+0

건배 cornelb에 기본 키를 만들어야합니다. – user1408643