2013-10-27 50 views
0

我正在做一個簡單的網站,每次有人點擊鏈接時都會計數,我是PHP和MySQL的新手,但是我已經掌握了一些基礎知識。所以,我在製作'目標計數器'時遇到問題所以我們可以說我的目標設置爲700個視圖。該頁面有500個視圖。當觀看次數達到700次時,我希望目標提高200次。因此,這將是900次,我希望每當觀看次數達到目標時都會發生這種情況。這是我想做到這一點:PHP和MySQL計數器

$goalQuery = mysql_query("SELECT * FROM goal"); 
$goalRow = mysql_fetch_assoc($goalQuery); 
if($viewNewCounts == $goal) { 
    $goalCounts = $goalRow['counts']; 
    $goalNewCounts = $goalCounts + 200; 
    $goalUpdate = mysql_query("UPDATE `Recoreder` . `goal` SET `counts` $goalNewCounts"); 
} 

我的DB(命名爲「刻錄機」)是安裝在那裏我有2個表:「目標」和「意見」每個表都有一個名爲行「罪狀」

這裏是一個視覺的東西我的數據庫看起來像:

    |---counts 
      |---views|  
---Recorder| [Tables] [Rows] 
      |---goal |  
        |---counts 

我的計數器代碼如下所示

注意:它工作得很好,我並沒有TROUBL與我的櫃檯E,我有麻煩,我的目標

$viewQuery = mysql_query("SELECT * FROM views"); 

while($viewRow = mysql_fetch_assoc($viewQuery)) 
{ 
    $viewCounts = $viewRow['counts']; 
    $viewNewCounts = $viewCounts + 1; 
    $viewUpdate = mysql_query("UPDATE `Recorder` . `views` SET `counts` = $viewNewCounts"); 
} 
+2

停止使用mysql_libs他們已經過時了10多年了。改用pdo。請參閱:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1 – Johan

+1

不應該Recoreder是記錄器? –

回答

0

下面的代碼應該做的伎倆。在代碼

Php: 
if ((($counts -100) % 200) === 0) { do the update statement 

SQL: 
update recorder.goal g set g.counts = 
    (select v.counts from recorder.views v where .....) 
where ..... 

筆記
你的代碼是窮人,因爲以下原因:
不要使用SELECT *,除非你真的要與所有下地幹活。
改爲選擇您想要的字段。

select v.counts from recorder.views v where ...... 

請停止使用過時和不安全的mysql_庫。
使用pdo代替你的代碼將更清潔,更高效,並且最重要的是從sql注入安全。見:http://php.net/manual/en/book.pdo.php

<?php 
try { 
    $conn = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
} catch(PDOException $e) {log the error and die} 

$sql = "select v.counts from recorder.views v where player = ?"; 
$statement = $conn->prepare($sql); 
$statement->execute(array(100)); 
$vcounts = $statement->fetchColumn(0); 
.... 
$conn = null; #clean up connection not needed for long periods. 
+0

感謝您提出的所有建議,並在未來加倍努力幫助我。 – Roooooo