2010-01-19 2 views
3

Я хочу знать, почему следующий запрос имеет. и "" в ". $ _ POST ['date']." и т. д.Зачем нужен этот запрос?

$query = "INSERT INTO eventcal ('eventDate','eventTitle','eventContent','user', 
'user_id') VALUES('".$_POST['date']."','".addslashes($_POST['eventTitle'])."', 
'".addslashes($_POST['eventContent'])."')";  

Если я перейду к следующему, будут ли какие-либо отличия?

VALUES('$_POST['date']','addslashes($_POST['eventTitle'])', 
'addslashes($_POST['eventContent'])') 

Заранее спасибо.

+0

Запрос не имеет точек, но является частью процесса построения строки. Ваш вопрос связан с PHP, а не (напрямую) с MySQL. И, наконец, ваш SQL позволяет SQL-инъекцию, поэтому ищите лучшую альтернативу, например PDO. –

ответ

0

Да, только переменные анализируются в двойных кавычках, что означает, что ваши функции не будут выполняться во втором кодовом блоке.

1

Оператор «точка» является оператором PHP для конкатенации строк. Я думаю, что использование функции addslashes является лучшей идеей, чем то, что у вас есть в первом примере, но вам все равно придется использовать конкатенацию строк, поскольку интерполяция строк PHP поддерживает только переменные.

2

Это форма конкатенации PHP (кавычки обозначают конец строк). В JavaScript и многих других языках это символ +, который объединяется.

echo "hello" . " " . "world!"; // Outputs 'hello world' 

Да, внесение такого изменения решительно изменит его значение.

Наконец, это открыто для суровых SQL инъекции, потому что date не удалось экранировать.

Всегда дезинфицируйте свой вход и используйте, если это возможно, параметризованные запросы.

+0

LOL ... как будто любая инъекция SQL-инъекций не является серьезной. –

+0

Как я могу дезинфицировать дату? Можете ли вы привести пример PLZ? – shin

+0

Вы можете просто использовать 'addslashes ($ _ POST ['data'])' как другие переменные, но вы должны, вероятно, проверить это сообщение, которое имеет несколько способов сделать это: http://stackoverflow.com/questions/60174/ лучший путь к остановке-SQL-инъекции-в-PHP –

1

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

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

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