2013-09-20 1 views
-1

Я сейчас работаю с PHP-сайтом, который подключается к базе данных и выбирает одну из наших таблиц для сравнения информации. В настоящее время мы сталкиваемся с проблемой с знаком @ при сравнении нашего письма с записью в таблице.@ Знак с выражениями PHP и SQL, вызывающими ошибки

Вот именно то, что происходит:

Мы используем ЗЕЬЕСТ сравнить переменную $ Email, чтобы узнать, что это связано ID для учетной записи. Проблема заключается в сравнении с $ Email, и мы отправили отчет об ошибках, и мы видим, что @ hotmail.com вызывает ошибку по синтаксическим стандартам SQL.

$id = "SELECT idaccount FROM `animator`.`account` WHERE email = $Email"; 
$result = mysqli_query($dbc, $id) or die("Error: ".mysqli_error($dbc)); 

Результатом является следующее:

Error: You have an error in your SQL syntax; check the manual that corresponds to your  MySQL server version for the right syntax to use near '@hotmail.com' at line 1 

Кто есть какие-нибудь идеи?

+4

Использовать цитату вокруг $ Email как = '$ Email' – Salim

+0

, и чтобы быть в безопасности, вы можете использовать 'mysqli_real_escape_string ($ dbc, $ Email)' вместо '$ Email'. Одиночные кавычки до и после должны оставаться такими, чтобы они выглядели как «...». Mysqli_real_escape_string ($ dbc, $ Email). "'..." ' –

+0

Спасибо, Салим! Такая ошибка новобранец !!! Извините за трату времени парней и оцените ответы! –

ответ

3

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

SELECT idaccount FROM `animator`.`account` WHERE email = '[email protected]' 

Даже лучше, вы должны подготовить заявление и привязывать значение $ Email. Посмотрите здесь: http://php.net/manual/en/mysqli-stmt.bind-param.php

+0

Добавление готовой инструкции после завершения тестирования для базы данных. Мы просто пытаемся получить всю работу, а затем перейдем к подготовленным операциям для защиты SQL-инъекций. Спасибо за помощь, ребята! –

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