2014-09-09 2 views
0

여러 가지 방법을 시도했지만 한 번 계산할 수 있습니다. 데이터베이스에 문제가 있다고 생각합니까? 데이터베이스 coloumn "count"를 0으로 재설정하고 페이지를 새로 고치면 1이되지만 그 이후에는 더 이상 계산되지 않습니다.PHP와 mysql 히트 카운터, 한 번만 카운트

<?php 
function update_count() { 
    $query = "SELECT `count` FROM `hits`"; 
    if($query_run = mysql_query($query)) { 
     $count++; 
     echo $count; 
     $query_count = "UPDATE `hits` set `count`='$count'"; 
     mysql_query($query_count); 
    } 
} 
update_count(); 
?> 
+0

무엇을하려하십니까? – Jenz

+1

쿼리가 성공적으로 실행되었는지 만 확인하면 쿼리의 데이터가 반환되지 않으므로 '$ count'는 아무 것도 계산하지 않습니다 – Luke

+0

히트 카운터입니다. 누군가가 입력 할 때마다 1을 더하고 싶습니다. 내 웹 사이트 또는 새로 고침 – kensil

답변

3

:

간단한 메모, mysql_* 기능을 사용 mysqli_* 또는 prepared statements되지 않습니다
$query = "SELECT `count` as cnt FROM `hits`"; 
$results = mysql_query($query); 
$count = mysql_fetch_array($result); // take only the first row. 
print_r($count['cnt']); 

.

+1

고마워, 내가 이해할 것, 내가 추가했다 $ count = mysql_result ($ query_run, 0, 'count'); count + + 전에 이전 값을 알고 있습니까? 나 맞아? – kensil

+1

반갑습니다. –

2

페이지를 새로 고치거나 스크립트를 다시 실행하면 이전 실행의 "직접"메모리가 없습니다. 스크립트가 끝나면 $count 값이 손실됩니다. (코드에서 update_count을 여러 번 호출한다고하더라도 $count은 함수의 범위에서만 설정됩니다.)

비슷한 결과를 얻으려면 어떻게 든 그 수를 저장해야합니다. 쿠키에서, 데이터베이스 또는 (아마도 최악의 경우) 직접 파일에. 당신이 $count 분실 페이지를 새로 고침 할 때, 데이터베이스에서 다시 선택해야하기 때문에이다

+0

답변을 주셔서 감사합니다 – kensil

1

데이터베이스에있는 개수를 변수에 할당하는 것이 아니라 새로운 변수를 증가시키는 것입니다 (오류가 발생해야 함 - 알림 : 정의되지 않은 변수 : 개수 ... - 오류 검사를 비활성화 했습니까? 데이터베이스 값 지정. 따라서 항상 1을 얻는 이유 - 새로 고칠 때마다 0의 새 값을 만들고 1을 추가하는 것입니다.

당신이 필요 -

$row = mysql_fetch_row($result); 
$count = $row[0]; 
$count++; 

참고 나는 그것이 MySQL과 PHP 모두에서 예약어의 당신이 당신의 데이터베이스의 필드 이름으로 카운트를 사용하지 말아야 추천 할 것입니다. 예기치 않은 오류/출력이 발생할 수 있습니다. Try having a look at this thread.

보십시오 (assuming you have PDO and your connection declared). 이미 사용중인 로직이 쿼리에 오류가 있음을 이미 지적 했으므로 이것을보십시오.

function updateCount() { 

# Update count 
$queryUpdate = $db->prepare('UPDATE hits SET hitcount = hitcount + 1'); 
$queryUpdate->execute(); 

# Get the updated count value 
$queryCount = $dbo->('SELECT hitcount FROM hits'); 
$queryCount->execute(); 

    # Check that a result is returned and assign result 
    if ($result = $queryCount->fetch(PDO::FETCH_OBJ) { 
    return $result->hitcount; 
    } 

} 

# Echo returned value 
$value = updateCount(); 
echo $value; 
+1

답변을 주셔서 감사합니다 – kensil

+0

시간을 얻으신다면 위에서 언급 한 것처럼 mysqli를 살펴 보거나 가장 좋은 PDO를 보시기 바랍니다. 그럴만 한 가치가 있으며 쓰기/읽기가 더 쉽습니다. – iamgory

관련 문제