使用PHP/My SQLi一次性验证促销代码

使用PHP/My SQLi一次性验证促销代码,php,forms,mysqli,Php,Forms,Mysqli,我对MySQLi的整个事情都很陌生。我对PHP有基本的了解。不管怎么说,我在这里到处找了找,就是找不到确切的答案 基本上,我有一个表格,一个人可以输入姓名、电子邮件和促销代码。表单会验证名称和电子邮件,但当涉及到促销代码时,我就被卡住了 我有一个有两列的数据库。一个用于代码,另一个用于“已使用”列–最终,当使用了唯一代码时,我需要能够在该列中写入“1”,以便不能再次使用。我正在尝试使用我在这里找到的一些代码,仅供参考 以下是连接到数据库后的PHP: if(isset($_POST['sponso

我对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>";
}

任何提示都将不胜感激!谢谢。

没有理由将您的任务作为两个单独的步骤来执行。只需将赞助商代码标记为teachercodes表中使用的代码。如果更新影响了任何行,即mysqli_infected_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
    }
}

您将表和列视为值;删除引号。嗯……我想这对处理事情起到了作用,但现在我被下一步该怎么做卡住了?再一次,对于这个基本的问题,我感到抱歉,但我对这个问题还不熟悉。还是没有验证?太棒了!谢谢您: