验证促销代码一次使用PHP / Mysqli

时间:2014-09-17 21:33:07

标签: php forms mysqli

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

任何提示都会非常感激!感谢。

1 个答案:

答案 0 :(得分:0)

没有理由作为两个单独的步骤执行您的任务。只需标记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
    }
}