2014-12-16 18 views
0

У меня возникли проблемы при подтверждении ссылки на письмо с подтверждением. Я могу отправить пользователям ссылку для подтверждения из моей базы данных как HTML электронной почты как этотПроблема с подтверждением подтверждения пароля подтверждения

$msg = " 
<a href=\"http://asite.ca/assets/functions/confirmation.php?key=$permissionCode\" target=\"_blank\">Click To Confirm</a> 
"; 

в $permissionCode порождает как этот

$permissionCode = substr(md5(rand(1000, 9999999)), 0, 12); 

, который я вставил в confirm_code поле.

и в моем confirmation.php у меня есть

$key = $_Get["key"]; 
$sql = "SELECT * FROM `contact_request` WHERE `confirm_code` = $key"; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) { 
echo "We Will Contact You Soon"; 

} else { 
    echo "0 results"; 
} 

, но я получаю 0 results в то время как тот же код ссылки в базе данных, когда пользователь нажимает на ссылку для подтверждения их по электронной почте! не могли бы вы сообщить мне, почему это происходит?

Благодаря

+0

'$ _Get' ->' $ _GET' Может быть ...? – Rizier123

+0

Спасибо, но это же! Я изменил получение к GET, но то же самое происходит! – Suffii

+1

'= '$ key'', есть строка в ключе, это не int – Ohgodwhy

ответ

1

обернуть $ ключ с одинарной кавычки в запросе

$sql = "SELECT * FROM `contact_request` WHERE `confirm_code` = '$key'"; 

В соответствии с просьбой в комментарии, см объяснение .....

Случай 1:

$key =substr(md5(rand(1000, 9999999)), 0, 12); 
$sql = 'SELECT * FROM `contact_request` WHERE `confirm_code` = $key'; 
echo $sql; 

мощность

SELECT * FROM `contact_request` WHERE `confirm_code` = $key 

Здесь, если вы видите, что одна цитата не ищет переменную. Что бы там ни было внутри '', рассматривается как строка и возвращается как таковой.

Случай 2:

$key =substr(md5(rand(1000, 9999999)), 0, 12); 
$sql = "SELECT * FROM `contact_request` WHERE `confirm_code` = $key"; 
echo $sql; 

Выход

SELECT * FROM `contact_request` WHERE `confirm_code` = dcd9c750bab0 

Здесь Поскольку запрос в двойных кавычках, что переменная считывается. но считаются int.

Случай 3:

$key =substr(md5(rand(1000, 9999999)), 0, 12); 
$sql = "SELECT * FROM `contact_request` WHERE `confirm_code` = '$key'"; 
echo $sql; 

Выход

SELECT * FROM `contact_request` WHERE `confirm_code` = 'fd7c159e29c6' 

Здесь Поскольку запрос в двойных кавычках, что переменная считывается. но рассматривается как строка, поскольку она инкапсулирована одинарными кавычками.

+0

Спасибо Indra, но это одна из тех запутанных частей, что когда использовать '' или нет ?! Не могли бы вы кратко сообщить мне, когда и почему мы должны использовать одинарные кавычки? – Suffii

+0

Надеюсь, вы сможете понять, как ведут себя котировки –

Смежные вопросы