验证促销代码为一次性使用PHP /我SQLI(Validate Promo Code for one

2019-10-20 23:41发布

我很新的全库MySQLi事情。 我对PHP有基本的了解。 无论如何,我搜索在这里,只是一直没能得到一个坚实的答案。

基本上,我有一个表格,当一个人可以输入姓名,电子邮件和促销代码。 表单验证姓名和电子邮件,但是当涉及到促销代码,这就是我卡住。

我有一个有两列的数据库。 一个是代码,另一个是为“拿来主义”列 - 最终我需要能够在已经采用了独特的代码,因此它不能被再次使用写有“1”到该列。 我试图使用一些代码,我在这里找到,仅供参考。

这里是PHP到数据库(连接后):

if(isset($_POST['sponsorcode']) && !empty($_POST["sponsorcode"])){
   $sponsorcode = mysqli_real_escape_string($link,$_POST['sponsorcode']);
   $query = "SELECT 'sponsorcode' FROM 'teachercodes' WHERE sponsorcode = '$sponsorcode'";
   $result = mysqli_query($link, $query) or die(mysqli_error($link));
   $option = "";
   if(mysqli_num_rows($result)>0){
       while($row=mysqli_fetch_array($result)) {
       $option = "<option value='{$row['codes']}'>{$row['codes']}</option>";
}

任何提示将非常感谢! 谢谢。

Answer 1:

没有理由来执行你的任务是两个独立的步骤。 只要选中赞助商的代码作为使用teachercodes表。 如果更新影响的任何行(即mysqli_affected_rows返回1或更多),那么它并没有被使用过,是一个有效的赞助商代码。 事情是这样的:

// Make sure a sponsor code was provided
if (isset($_POST['sponsorcode']) && !empty($_POST['sponsorcode'])) {

    // Escape the sponsor code to prevent SQL injection
    $code = mysqli_real_escape_string($link, $_POST['sponsorcode']);

    // Mark sponsor code as used if possible 
    $sql = 'UPDATE teachercodes SET used=1 WHERE sponsorcode="' . $code . '"';
    mysqli_query($link, $sql) or die(mysqli_error($link));

    if (mysqli_affected_rows($link)) {
        // Sponsor code hasn't been used before and is valid
    }
}


文章来源: Validate Promo Code for one time use PHP/My SQLi
标签: php forms mysqli