PHP MySql – проверьте, существует ли значение

Необходимо проверить, существуют ли как EMAIL_ADDRESS и ACTIVATION_CODE в таблице MySql, если это так возвращает "Code is valid" , иначе "Code is NOT valid" .

В настоящее время он всегда возвращает код недействительным, однако я проверил запись в таблице, и запрошенный код существует.

 $email = $_POST['email']; $acticode = $_POST['code']; $result = mysql_query("SELECT * FROM xActivate WHERE EMAIL_ADDRESS='$email' AND ACTIVATION_CODE='$acticode' LIMIT 1"); if (mysql_fetch_row($result)) { echo 'Code is valid'; } else { echo 'Code is NOT valid'; } 

Но этот код небезопасен:

 $email = $_POST['email']; $acticode = $_POST['code']; $result = mysql_query("SELECT * FROM xActivate WHERE EMAIL_ADDRESS='$email' AND ACTIVATION_CODE='$acticode' LIMIT 1"); $data = mysql_fetch_row($result); if (mysql_num_rows($result) > 0) { echo 'Code is valid'; } else { echo 'Code is NOT valid'; } 

Чтобы защитить и предотвратить SQL Injection:

 $email = mysql_real_escape_string($_POST['email']); $acticode = mysql_real_escape_string($_POST['code']); 

Пожалуйста, обратите внимание:

http://ca1.php.net/mysql_real_escape_string

Предупреждение

Это расширение устарело с PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. См. Также MySQL: выбирая руководство по API и связанные с ним FAQ для получения дополнительной информации. Альтернативы этой функции включают:

  mysqli_real_escape_string() PDO::quote()