Ищу помощь в удалении данных для запросов MySQL - PullRequest
0 голосов
/ 24 мая 2010

Пожалуйста, не присылайте мне ссылку на php.net, ссылаясь на mysql_real_escape_string в качестве единственного ответа. Я прочитал страницу и, хотя я понимаю общие концепции, у меня возникли некоторые проблемы, связанные с тем, как в настоящее время строится мое утверждение INSERT.

Сегодня я использую следующее:

$sql = "INSERT INTO tablename VALUES ('', 
                                      '$_SESSION['Member1FirstName'], 
                                      '$_SESSION['Member1LastName'], 
                                      '$_SESSION['Member1ID'], 
                                      '$_SESSION['Member2FirstName'], 
                                      '$_SESSION['Member2LastName'], 
                                      '$_SESSION['Member2ID'] ....)

и список продолжается для 20+ участников с некоторыми другими введенными значениями. Кажется, что большинство людей в примерах уже хранят все свои данные в массиве.

На моем сайте я принимаю входные данные формы, action = "" устанавливается на себя, происходит проверка php, и если проверка проходит успешно, данные сохраняются в переменные SESSION на странице 2, а затем перенаправляются на следующую страницу процесса 3) (примерно 8-10 страниц за весь процесс).

Ответы [ 3 ]

3 голосов
/ 24 мая 2010

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

$sql = "INSERT INTO tablename VALUES ('', '" .
    mysql_real_escape_string($_SESSION['Member1FirstName']) . "', '" .
    mysql_real_escape_string($_SESSION['Member1LastName']) . "', '" .
    etc..

Или, в качестве альтернативы, посмотрите подготовленные операторы и свяжите параметры для более простого (и более быстрого) решения.

2 голосов
/ 24 мая 2010

1) вам не хватает закрывающей одинарной кавычки, а переменные не заменяются внутри одинарных кавычек.

2) mysql_real_escape_string - ответ, но попробуйте его с помощью sprintf:

$sql = sprintf("INSERT INTO tablename VALUES ('', '%s', '%s', '%d' )",
               mysql_real_escape_string( $_SESSION['Member1FirstName']),
               mysql_real_escape_string( $_SESSION['Member1LastName']),
               $_SESSION['Member1ID']); // %d forced it as a digit

http://us2.php.net/manual/en/function.sprintf.php

0 голосов
/ 24 мая 2010

Почему вы не можете использовать mysql_real_escape_string?

Вы также можете использовать регулярное выражение, чтобы разрешить только определенные символы, которые ожидаются в имени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...