MySQL совпадающие и несовпадающие комбинации

Я пытаюсь создать условные заявления для проверки лицензии. У меня 3 параметра purchase code, item id а также website 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!';
}
}

?>

0

Решение

Может быть, 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!';
}

Если у вас есть больше строк в таблице, просто просматривайте набор результатов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]