2015-12-14 124 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