PHP/MySQL 跟踪使用情况

标签 php mysql

我试图用调用函数时的总使用次数来更新我的表。我需要做的是捕获以前的使用次数,然后添加一个。我对如何解决这个问题有一个很好的总体想法,但我不太知道如何获得具有各自用途的唯一 ID。这就是我到目前为止所拥有的......

<?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();
 ?>

我可以看到我的问题是我将 use 变量分配给一个数组,我不知道如何将其特定于用户名。这是我缺少的简单 SQL 查询吗?

最佳答案

您可以将数据存储在名为 $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,而不是使用名称。

关于PHP/MySQL 跟踪使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273227/

相关文章:

php - 在谷歌日历中插入事件

php - 循环到子级的 FINITIE 深度

php - MySQL 获取与 WHERE 子句匹配的列名

php - 带有文件附件的 php 联系人脚本需要帮助

php - 拉拉维尔 5.3 : Many to many realtionship's data

php - 您能显示哪些项目绑定(bind)到 PDO 语句吗?

C# 将字符串拆分并存储到数据表中——然后比较 2 个数据表

mysql 未在 ubuntu 上启动

mysql - 如何在数值前插入美元符号

php - 将数据写入具有 777 权限的文件