Почему этот запрос имеет.? - PullRequest
3 голосов
/ 19 января 2010

Я хочу знать, почему следующий запрос. и "" в ". $ _ 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'])')

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

Ответы [ 4 ]

2 голосов
/ 19 января 2010

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

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

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

Наконец, это открыто для серьезной атаки SQL-инъекцией, поскольку date не удалось избежать должным образом.

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

1 голос
/ 19 января 2010

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

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

1 голос
/ 19 января 2010

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

0 голосов
/ 19 января 2010

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

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