PHP в цикле MySQL, чтобы проверить, если значения LicenseID содержатся в БД MySQL


У меня есть некоторые проблемы, чтобы найти правильный цикл, чтобы проверить, если некоторые значения хранятся в БД MySQL. Я делаю программного обеспечения, и я хочу, чтобы добавить код лицензии. Каждый пользователь имеет X ключи, чтобы использовать.

Теперь, когда пользователь запустит клиент, это вызывает PHP-странице, что проверить, если ключ, передаваемый в метод POST, хранящихся в БД или нет.

Если этот ключ не хранить, чем мне нужно, чтобы проверить количество своих ключей. Если это > чем Х я запретить ему в противном случае я добавляю новые ключи в БД.

Я новичок в PHP и MySQL. Я написал этот код, и я хотел бы знать, если я могу улучшить его.

<?php

$user = POST METHOD 
$licenseID = POST METHOD

$resultLic= mysql_query("SELECT  id , idUser , idLicense FROM license WHERE idUser = '$user'") or die(mysql_error());
$resultNumber = mysql_num_rows($resultLic);
$keyFound = '0'; // If keyfound is 1 the key is stored in DB

while ($rows = mysql_fetch_array($resultLic,MYSQL_BOTH)) {
   //this loop check if the $licenseID is stored in DB or not
    for($i=0; $i< $resultNumber ; i++) { 
        if($rows['idLicense'] === $licenseID) {
            //Just for the debug 
            echo("License Found");
            $keyFound = '1';
            break;
    }
    //If key isn't in DB and there are less than 3 keys the new key will be store in DB

    if($keyfound == '0' && $resultNumber < 3) { 
        mysql_query( Update users set ...Store $licenseID in Table) 
    }

    // Else mean that the user want user another generated key (from the client) in the DB and i will be ban (It's wrote in TOS terms that they cant use the software on more than 3 different station)                    
    else { 
        mysql_query( update users set ban ='1'.....etc );
    }                               
}

?>          

Я знаю, что этот код, кажется, очень плохо, поэтому я хотел знать, как я могу улучшить его. Кто-то может дать мне какие-либо советы?

Я есть 2 таблицы: пользователи , где вся информация о пользователях, с полями ИД, имя пользователя, пароль и другую таблицу лицензия с полями ИД, idUsername, idLicense (последний магазин лицензионного программного обеспечения, что генерирует)



288
1
задан 15 ноября 2011 в 05:11 Источник Поделиться
Комментарии
1 ответ

Во-первых: как код, так и дизайн таблицы может (есть?) быть улучшено:


  1. Таблицы должны быть нормализованы и могут быть улучшены путем удаления данных и дубликатов

    • Таблица пользователи могут (?) у пользователя только в качестве натурального ПК (чистый ИД исключены)

    • Дополнительно: лицензия таблице будет лучше понятно, если ФК будет иметь такое же имя, как для таблицы users (имя пользователя)


  2. Для цикла для ваших задач это не очень хороший стиль программирования:

    • Вы можете просто проверить результат (размер массива) выберите idLicense где idLicense = $licenseID (SQLGuru: вообще!!!)

    • Общее количество лицензий на одного пользователя может быть извлечен из таблицы с одного выберите граф(idLicense), где idUser = '$имя пользователя' (SQLGuru: вообще еще раз!!!)


1
ответ дан 15 ноября 2011 в 10:11 Источник Поделиться