Как проверить, существуют ли данные в столбце, и проверить, чтобы второй столбец этой строки совпадал с определенным числом

Каждый!

У меня проблемы с созданием оператора MySQL.

Пример:

У меня есть один столбец с именем "keys", а другой столбец с именем "isUsed", и столбец "keys" состоит из множества различных ключей в этом формате: xxxx-xxxx-xxxx, и я хочу проверить, использовался ли этот ключ уже или нет.

Это формат таблицы:

     Key          |   isUsed
xxxx-xxxx-xxxx    |      0

Я уже сделал это, поэтому он проверяет, существует ли ключ с помощью этого кода:

$arrExistKey = mysqli_query($resDBCon, "SELECT Key FROM keys WHERE Key = '$strKey'");
$intKeys = mysqli_num_rows($arrExistKey);

if ($intKeys != 1) {
    sendError('The beta-key does not exist!');
}

Итак, я проверил, существует ли ключ, теперь я просто пытаюсь выяснить, как проверить, использовался ли он уже.

Если кто-нибудь может мне помочь, это было бы здорово! Спасибо.

4 ответа

Решение

Как насчет просто кодирования логики в SQL?

$arrExistKey = mysqli_query($resDBCon, "SELECT Key FROM keys WHERE Key = '$strKey' AND isused = 1");

Это может быть то, что вам нужно:

// SELECT THE KEY YOU NEED
$result = mysqli_query($resDBCon, "SELECT * FROM keys WHERE Key = '$strKey'");
// LOOP ALL RESULTS AND ENTERING IN THE WHILE MEANS THAT THE KEY EXISTS
while($row = mysqli_fetch_array($result) {

   // HERE YOU CHECK IF KEY WAS USED
   if($row['isUsed'] == 1)
       echo 'Key was used';
}

Одним из решений будет изменение вашего оператора SQL на

"SELECT Key, isUsed FROM keys WHERE Key = '$strKey'"

Теперь вы можете проверить, существует ли ключ, используя ваше решение, а затем mysqli_fetch_array функция для получения значения для isUsed,

Также, пожалуйста, проверьте, если $strKey не содержит недопустимых символов перед вставкой в ​​оператор SQL. В зависимости от остальной части вашего кода, он может быть уязвим для внедрения SQL.

Удачи в реализации!

Вот что вам нужно!

    <?php

$arrExistKey = mysqli_query($resDBCon, "SELECT Key FROM keys WHERE Key = '$strKey'");
$intKeys     = mysqli_num_rows($arrExistKey);


$sql = mysqli_query($resDBCon, "SELECT * FROM keys WHERE Key = '$strKey'");
while ($row = mysql_fetch_array($sql)) {

    $used = $row['isUsed'];

}


if ($intKeys != 1) {
    sendError('The beta-key does not exist!');
} else {


    if ($used == 1) {
        echo "the key has already been used recently!";
    } else {
        //action
    }
}

?>

Удачи!

Другие вопросы по тегам