Mysql
 sql >> база данни >  >> RDS >> Mysql

Проверете имейла, за да бъде уникален php

  • Първо... както @RamRaider вече коментира, трябва да добавите уникален индекс към email колона
  • Второ... трябва да спрете да използвате mysql_* функции, защото са отхвърлени. Можете да използвате mysqli_* функции, MySQLi клас или PDO . Освен това, като използвате подготвени изрази, избягвате SQL инжекции
  • Дори ако зададете уникален индекс, винаги трябва да проверявате, преди да го вмъкнете:

    <?php
    
    // PDO instantiation here
    
    $stmt = $pdo->prepare('SELECT COUNT(email) AS EmailCount FROM emails WHERE email = :email');
    $stmt->execute(array('email' => $_POST['email']));
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($result['EmailCount'] == 0) {
        $stmt = $pdo->prepare('INSERT INTO emails (email) VALUES (:email)');
        $stmt->execute(array('email' => $_POST['email']));
        echo 'Thank you for Submitting. Redirecting back to Home Page';
    } else {
        echo 'E-mail exists!';
    }
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли инструмент за статичен анализ за идентифициране на sql инжекция за php/mysql

  2. получаване на синтактична грешка при създаване на функция

  3. Неуспешно четене на стойността за автоматично увеличение от машината за съхранение, номер на грешка:1467

  4. Мястото в хранилището на RDS базата данни свърши

  5. Лошо ли е за производителността да се изберат всички колони?