2009-10-18 2 views
0

다음 스크립트는 데이터베이스를 업데이트하지만 각 페이지마다 정확한 페이지 수를 표시하지 않습니다. 그것은 어떤 이유로 대부분의 시간에 페이지의 페이지 수를 고정시킵니다. 여기 PHP와 MySQL은 여러 페이지 카운터 문제를 해결합니까?

는 PHP 코드 :

<?php 
$page = $_SERVER['SCRIPT_FILENAME']; 

// Query member data from the database and ready it for display 
$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT id page FROM mysql_counter_logs WHERE page = '$page'"); 

if (mysqli_num_rows($dbc) == 0) { 
    $mysqli = new mysqli("localhost", "root", "", "sitename"); 
    $clean_page = mysqli_real_escape_string($mysqli, $page); 
    $dbc = mysqli_query($mysqli,"INSERT INTO mysql_counter_logs (page) VALUES ('$clean_page')"); 
} 

if ($dbc == 1) { 
    $dbc = mysqli_query($mysqli,"UPDATE mysql_counter_logs SET hits = hits + 1 WHERE page = '$page'"); 
} 

//Retrieves the current count 
$count = mysqli_fetch_row(mysqli_query($mysqli,"SELECT hits FROM mysql_counter_logs")); 

if (!$dbc) { 
    // There was an error...do something about it here... 
    print mysqli_error(); 
} 

//Displays the count on your site 
echo $count[0]; 
?> 

답변

1

당신이 테이블 구조를 주면 내가이 테이블 구조를 이해 방법, 당신은 id로 페이지 문자열을 사용하여 삽입로부터 분명 있기 때문에, 더 좋았을 것 쿼리 select id as page ... where page =... 테이블 구조를 잘 모르겠습니다. 그래서 문제가 삽입 또는 업데이트라고 말할 수는 없습니다. 내 위의 가정이 옳다면

당신은 업데이트 쿼리에 id 대신에 page을 배치 where 절을 변경 업데이트 문 -

$dbc = mysqli_query($mysqli,"UPDATE mysql_counter_logs SET hits = hits + 1 WHERE id= '$page'"); 
+0

여전히 같은 문제를 얻을. – new

+0

및 데이터베이스가 잘못 업데이트됩니다. – new

관련 문제