2015-12-14 123 views
0

我試圖更新我的表與調用函數時使用的總數。我需要做的是抓住以前的使用次數,並添加一個。我有一個非常好的總體思路如何去做這件事,但我不知道如何獲得獨特的ID與他們各自的用途。這是我迄今爲止...PHP/MySQL跟蹤使用

<?php 
$query = $conn->query('select name, uses from users'); 
    $i = 0; 
    while($r = $query->fetch(PDO::FETCH_OBJ)){ 
     $name[$i] = $r->name; 
     $uses[$i] = $r->uses; 
    $i = $i+1; 
    } 
if(isset($_POST['mName'])) 
{ 
    $mName = urldecode($_POST['mName']); 
    $mUses = $uses + 1; 

"UPDATE users 
         SET uses=:uses WHERE name=:name"; 
$stmt = $conn->prepare($sqlUPDATE); 
$stmt->bindParam(':uses', $mUses); 
$stmt->bindParam(':name', $mName); 
$stmt->execute(); 
?> 

我可以看到我的問題是,我分配使用變量數組,我不知道如何得到它特定的用戶名。這是一個簡單的SQL查詢我錯過了嗎?

+0

什麼是名稱,函數的名稱或用戶的名稱?表中還有其他列嗎?桌子是否有唯一的鑰匙? – slapyo

+0

用戶的名稱,該表具有主ID密鑰,並且還有電子郵件和訪問時間 – Bahamit

+0

爲什麼要將數據存儲在2個數組中?爲什麼不把它存儲在1.'$ users [$ i] = array('name'=> $ r-> name,'uses'=> $ r-> uses);'或者不使用計數器作爲鍵,使用用戶名'$ users [$ r-> name] = $ r-> uses;' – slapyo

回答

1

您可以將數據存儲在名爲$uses的數組中,其中鍵爲用戶名,值爲使用次數。然後,如果你檢測與MNAME參數集的POST,您可以使用該名稱引用您的$uses陣列,並得到使用的次數,並添加1

<?php 
    $query = $conn->query('select name, uses from users'); 
    while($r = $query->fetch(PDO::FETCH_OBJ)){ 
     $uses[$r->name] = $r->uses; 
    } 
    if(isset($_POST['mName'])) { 
     $mName = urldecode($_POST['mName']); 
     $mUses = $uses[$mName] + 1; 
     $sqlUPDATE = "UPDATE users SET uses=:uses WHERE name=:name"; 
     $stmt = $conn->prepare($sqlUPDATE); 
     $stmt->bindParam(':uses', $mUses); 
     $stmt->bindParam(':name', $mName); 
     $stmt->execute(); 
    } 
?> 

雖然沒有錯誤檢查和處理在這裏。如果碰巧有一個帶有mName的POST,並且該名稱不存在,則不會更新,但是不會爲新用戶插入任何內容。另外,如果可能的話,不要使用名稱,而是最好爲用戶使用一個id。

+0

中使用; } 確實[$ I]需要聲明,或者它會自動從查詢填充 編輯:我只是跑它,它不工作:|? – Bahamit

+0

對不起,我忘了改'$ i'到'$ r->名字' – slapyo

+0

好吧我想了大聲笑,我改變了它,它的工作。非常感謝你!:) – Bahamit