2009-10-18 42 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 2009-10-18 06:19:41

+0

和数据库更新不正确。 – new 2009-10-18 06:20:46