|
|
|
|
<?
$k=mysql_escape_string("tralala'fdfdfdf ' v df \df");
mysql_query("INSERT INTO words (word) VALUES ('$k');");
$s=mysql_fetch_array(mysql_query("SELECT word FROM words WHERE word='$k';"));
mysql_query("INSERT INTO words2 (word) VALUES ('$s[word]');");// вот здесь - правильно? Или $s['word'] тоже надо обрабатывать mysql_escape_string ?
?>
|
И второй вопрос... не повредит ли двойной mysql_escape_string ? Я боюсь, как бы не вышло \' - после первого, а \\' - после второго... | |
|
|
|
|
|
|
|
для: Shorr Kan
(19.05.2006 в 18:35)
| | Экранирующие слэши исчезнут сразу, как только исполнят свою функцию - адекватно опишут строку-параметр оператора INSERT. В таблице words добавленных слэшей уже не будет.
Естественно, при формировании параметра второго запроса экранирование придется выполнить и для него. Опять же в результате выполнения в таблице words2 окажется текст. Без лишних слэшей.
Правило очень простое. mysql_escape_string нужно вызывать всякий раз, когда Вы собираетесь после этого обрамить строку апострофами и применить полученное в качестве параметра SQL-запроса. На каждую пару апострофов - один вызов mysql_escape_string. | |
|
|
|
|
|
|
|
для: Shorr Kan
(19.05.2006 в 18:35)
| | Да вместо
<?php
mysql_query("INSERT INTO words2 (word) VALUES ('$s[word]');")
?>
|
здесь следует писать
<?php
mysql_query("INSERT INTO words2 (word) VALUES ('". mysql_escape_string($s['word'])."');")
?>
|
| |
|
|
|