Когда я отправляю переменную в базу данных, я, конечно, использую mysql_real_escape_string
. Таким образом, специальные символы идут в базу данных как положено.
Когда я читаю эту переменную из базы данных, я снова использую mysql_real_escape_string вместе с stripslashes
:
$var = stripslashes(mysql_real_escape_string($record['rowname']));
иначе это даст мне косую черту перед кавычками.
Когда я использую этот $var
, о котором я упоминал выше, и хочу повторить его, я просто могу echo "$var"
, потому что он уже был удален и экранирован, верно?
Кроме того, если я использую stripslashes
+ mysql_real_escape_string
для переменной, то POST этой же переменной снова в базе данных, достаточно ли mysql_real_escape_string
? Или мне нужно снова stripslashes
эту переменную?
Обобщая:
Насколько я знаю, как это работает:
- используйте
mysql_real_escape
КАЖДЫЙ раз при использовании данных с mysql: при чтении запроса через переменные так же, как отправка переменных в базу данных. - Используйте
stripslashes
при отображении экранированных переменных. - Если вы хотите снова опубликовать
stripslashes
и escape-переменные в базе данных, вам не нужно снова удалять их.
Я скучаю по htmlspecialchars
?
ИЗМЕНИТЬ
Значит, это все неправильно?
while( $record=mysql_fetch_array($result) )
{
$custid=mysql_real_escape_string($record['custid']);
$custsurname=mysql_real_escape_string($record['custsurname']);
$custmidname=mysql_real_escape_string($record['custmidname']);
$custforename=mysql_real_escape_string($record['custforename']);
$custcountry=stripslashes(mysql_real_escape_string($record['custcountry'])); }
PDO
mysqli
из-за поддержки именованных параметров. - person   schedule 10.02.2013