Ошибка MySQL при добавлении специальных символов, особенно в знак, даже с методом mysql_real_escape_string () - PullRequest
1 голос
/ 31 августа 2011

Я пытаюсь создать пользовательскую систему с базой данных mysql.Я попытался вставить строку в таблицу со следующим php-кодом:

$UserCreateQueryText = "INSERT INTO  users (
Username, Password, FirstName, LastName, eMail, ID, ClearanceLevel)
VALUES (
" . $User . ", " . $Password . ", " . $FirstName . ", " . $LastName . ", " . $eMailToUse . ", NULL, 1)";

$UserCreateQuery = mysql_query($UserCreateQueryText) or die(" User creation query error: " . mysql_error());

Переменные, которые я использовал, определены следующим образом:

$User = mysql_real_escape_string($_GET["Username"]);
$Password = mysql_real_escape_string($_GET["Password"]);
$FirstName = mysql_real_escape_string($_GET["FirstName"]);
$LastName = mysql_real_escape_string($_GET["LastName"]);
$eMail = mysql_real_escape_string($_GET["eMail"]);

Я использовал $ _GET, чтобы я могвидим, что переменные действительно передаются правильно.

Итак, если я вставлю электронное письмо (example@domain.com), результат $ UserCreateQueryText будет:

INSERT INTO  users (
Username, Password, FirstName, LastName, eMail, ID, ClearanceLevel)
VALUES (
username, password, Name, LastName, , NULL, 1)

, поэтому получим электронное письмоочистка поля и выдача ошибки:

User creation query 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
' NULL, 1)' at line 4

-Ric Del ( foxtailgames.com.mx )

1 Ответ

2 голосов
/ 31 августа 2011

Вам нужно заключить в кавычки строковые значения:

INSERT INTO ... VALUES ('String', 'string', ...)

В настоящее время вы не:

INSERT INTO ... VALUES(Foo, Bar@baz.com, ...)

Это дает синтаксическую ошибку.

...