显示"密钥已被使用"如果密钥已被使用

时间:2018-05-07 06:35:33

标签: php mysql

我正在尝试创建一个系统,向用户提供促销代码并将其输入表单。系统检查代码是否已被使用,如果没有,则返回"代码已被使用"。如果没有,则返回产品密钥。

到目前为止,如果代码无效,我得到它的消息,如果密钥是正确的但没有使用但我不能在我的生活中弄清楚如果促销代码已经是如何让它回应消息使用

" acode"是访问代码。

" akey"如果有效且未使用,则返回。

The database setup here

<form method="POST">
    Access Code:
    <input type="text" name="acode">
    <br />
    <input type="submit" name="sub">
</form>

    <?php 
        // this will trigger when submit button click
        if(isset($_POST['sub'])){
            $db = new mysqli("","","","");
            // create query
            $query = "SELECT * FROM promo_codes WHERE acodes='".$_POST['acode']."'";

            // execute query
            $sql = $db->query($query);
            // num_rows will count the affected rows base on your sql query. so $n will return a number base on your query
            $n = $sql->num_rows;

            // if $n is > 0 it means there is an existing record that matches base on your query above.

            if($n > 0){
                $coderesult  = "SELECT akeys FROM promo_codes WHERE isclaimed='0' AND acodes='".$_POST['acode']."' LIMIT 1";
                $results = $db->query($coderesult);
                    foreach($results as $row)
                        {
                            if ($n > 0){
                                echo "Your key is ".$row['akeys']."<br>";

                            }

                        }
            } else {
                echo "Incorrect Access Key";
            }
        }

    </body>
    </html>

1 个答案:

答案 0 :(得分:0)

您错误地检索了akeys条记录。在从结果对象实际获取记录之前,您需要进行fetch_assoc()调用。

更改

$results = $db->query($coderesult);
                foreach($results as $row)
                    {
                        if ($n > 0){
                            echo "Your key is ".$row['akeys']."<br>";

                        }

                    }

$results = $db->query($coderesult);
$row = $results->fetch_assoc();

if(isset($row['akeys'])){
    echo "Your key is ".$row['akeys']."<br>\n";
}
else {
    echo "Code has been used!<br/>\n"
}