php - MySQL 匹配和不匹配组合

标签 php mysql sql licensing

我正在尝试创建用于许可证验证的条件语句。我有 3 个参数购买代码商品 ID网站 URL。我想检查它们是否一起或部分匹配我的数据库行中的数据,如果不存在则插入。所以我必须创建一个或多个 SQL 查询来执行此操作,但我无法弄清楚什么是最干净/有效的方法。查看代码本身,您就会明白我想要做什么。

<?php

if (isset($_GET['purchasecode']) && isset($_GET['itemid']) && isset($_GET['website'])) {

    $purchasecode = $mysqli->real_escape_string($_GET['purchasecode']);
    $website      = $mysqli->real_escape_string($_GET['website']);
    $itemid       = $mysqli->real_escape_string($_GET['itemid']);

    require_once 'class-verify.php';

    $access_token = 'MyAccessTokenHere';

    $purchase = new EnvatoPurchaseCodeVerifier($access_token);

    $verified = $purchase->verified($purchasecode);

    // Verified that user have purchased one of our items
    if ($verified) {

        $item_id         = $verified->item->id;
        $item_name       = $verified->item->name;
        $buyer           = $verified->buyer;
        $license         = $verified->license;
        $amount          = $verified->amount;
        $sold_at         = $verified->sold_at;
        $supported_until = $verified->supported_until;

        $query = $mysqli->query("SELECT * FROM PurchaseCodes WHERE Code='".$purchasecode."' AND ItemID='".$item_id ."' AND Website='".$website."'");

        if (/* puchase code, item id and website URL exist/matches */) {
            echo 'License is already active!';
        } elseif (/* puchase code and item id matches but website URL is different */) {
            echo 'License is already actived on another website!';
        } elseif ($item_id != $itemid) {
            echo 'This purchase code is for our another item';
        }else {
            // insert into database if not already exists
            $mysqli->query("INSERT IGNORE INTO PurchaseCodes (Code, ItemID, Website) VALUES ('$purchasecode', '$item_id', '$website')");
            echo 'License is successfully activated!';
        }

    } else {
        echo 'Purchase code is invalid!';
    }
}

?>

最佳答案

也许像这样的 smt 会有所帮助:

$valid_license_sql = "SELECT 
    CASE WHEN Code='".$purchasecode."' THEN 1 ELSE 0 END as purchasecode,
    CASE WHEN ItemID='".$item_id ."' THEN 1 ELSE 0 END as itemid,
    CASE WHEN Website='".$website."' THEN 1 ELSE 0 END as website,
    CASE WHEN Code='".$purchasecode."' AND ItemID='".$item_id ."' AND Website='".$website."' THEN 1 ELSE 0 END as license
 FROM PurchaseCodes";

 $query = $mysqli->query($valid_license_sql);
 $proper= $query->fetch_assoc();



 if ( $proper['license'] ) {
             echo 'License is already active!';
         } elseif ( $proper['purchasecode'] && $proper['itemid'] && !proper['website']) {
             echo 'License is already actived on another website!';
         } elseif ( !$proper['itemid'] ) {
             echo 'This purchase code is for our another item';
         }else {
             // insert into database if not already exists
             $mysqli->query("INSERT IGNORE INTO PurchaseCodes (Code, ItemID, Website) VALUES ('$purchasecode', '$item_id', '$website')");
             echo 'License is successfully activated!';
         }

如果表中有更多行,只需循环遍历结果集即可。

关于php - MySQL 匹配和不匹配组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51907890/

相关文章:

php - 将 SQL 数据库查询结果显示为链接

php - 我如何从 mysql 数据库中的序列化字段中搜索?

javascript - 当用户使用 Facebook SDK for JavaScript 在 Facebook 上分享帖子时如何更新 mysql 中的数据

sql - 给定MSSQL查询的SQLite等效查询。

php - Opencart 新版本无法在本地主机上运行

php - SPSS 和 PHP/MySQL 集成

php - 更新连接功能在 php 中无法正常工作

Mysql JOIN 查询明显慢

sql - 通过在 Big Query 中插入日期记录来填充数据

php - 如何使用 PHP 将 SQL Server 表中新添加的行传输到相同的 MySQL 表?