Синтаксическая ошибка MySQL — дополнительные глаза?

#mysql #sql #syntax

#mysql #sql #синтаксис

Вопрос:

Может ли кто-нибудь просмотреть это утверждение? Я продолжаю получать синтаксическую ошибку, и я в тупике относительно того, что не так.

 mysql_query("INSERT INTO emails (to, from, subject, content, ip) VALUES('$email_to', '$email_from', '$subject', '$content', '$ip' ) ") 
  

Спасибо!

РЕДАКТИРОВАТЬ: Ошибка

 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 ''to', 'from', subject, content, ip) VALUES('[MY EMAIL ADDRESS]', 'l', 'hi', ' at line 1
  

РЕДАКТИРОВАТЬ 2:

Я очистил.

 $email_to = mysql_real_escape_string($_POST['email_to']);
$email_from = mysql_real_escape_string($_POST['email_from']);
$subject = mysql_real_escape_string($_POST['subject']);
$content = mysql_real_escape_string($_POST['content']);
  

Комментарии:

1. какое сообщение об ошибке вы получаете.

2. Очень сложно найти синтаксическую ошибку SQL без реального запроса и сообщения об ошибке.

3. Помимо синтаксических ошибок, это действительно плохая идея позволить кому-то проводить атаки с использованием SQL-инъекций, отправляя вам электронное письмо.

4. Извините, я введу сообщение об ошибке, но оно просто общее. Марко решил это.

5. @Wooble я избегаю кода, отправленного пользователем ранее на странице.

Ответ №1:

Попробуйте это:

 mysql_query(
    "INSERT INTO emails (`to`, `from`, subject, content, ip) 
    VALUES('$email_to', '$email_from', '$subject', '$content', '$ip' )") 
  

Я думаю, что возникает ошибка, потому from что это зарезервированное слово … обратные ссылки должны решить эту проблему.
Помните, что вы всегда ДОЛЖНЫ очищать пользовательский ввод, чтобы избежать SQL-инъекции!!

Комментарии:

1. Спасибо! Я этого не знал. Для чего зарезервированы слова?

2. @Sam: зарезервированные работы — это (я скажу вам простым способом) те, с помощью которых database Engine создает свой язык запросов. Взгляните сюда

3. @Sam: tobyodavies прав, вы всегда ДОЛЖНЫ очищать пользовательский ввод, чтобы избежать SQL-инъекции!!!

Ответ №2:

Возможно, экранировать поле «from», так как from — это ключевое слово;