Forum Webscript.Ru

Программирование => PHP => Тема начата: chaosstorm от 09 Сентября 2004, 00:25:36

Название: addslashes
Отправлено: chaosstorm от 09 Сентября 2004, 00:25:36
Помогите плиз!


$name = "Name\'s";

$name = AddSlashes($name);
echo "$name";
//на этом месте скрипт выводит: Name\\\'s

$query = "UPDATE tablename SET columname=\'$name\' where id=\'0\'";
mysql_query($query);

В базу данных почему-то записываеться: Name

почему?
Название: addslashes
Отправлено: Меняздесьдавнонет от 09 Сентября 2004, 00:33:53
а addslashes-то тут при чем?
Название: addslashes
Отправлено: Меняздесьдавнонет от 09 Сентября 2004, 00:34:40
а и форум, кстати - тоже совсем непонятно, при чем.
Название: addslashes
Отправлено: Макс от 09 Сентября 2004, 00:48:22
Цитировать
chaosstorm:
В базу данных почему-то записываеться: Name

каким образом проверяешь ?
Название: addslashes
Отправлено: chaosstorm от 09 Сентября 2004, 07:23:02
Через самы базу данных!
Название: addslashes
Отправлено: Макс от 09 Сентября 2004, 17:23:43
в смысле через консоль ?
Название: addslashes
Отправлено: PyJIeT от 09 Сентября 2004, 20:09:07
$name = "Name\'s";

$name = AddSlashes($name);
echo "$name";
//на этом месте скрипт выводит: Name\\\'s

$query = "UPDATE tablename SET columname=\'$name\' where id=\'0\'";
mysql_query($query);

Простите, а как в базу может записаться Name?
Название: addslashes
Отправлено: chaosstorm от 09 Сентября 2004, 22:12:47
PyJIeT
А я ведь такой же вопрос в своем первом посте задал!

Макс
через phpmyadmin
Название: addslashes
Отправлено: PyJIeT от 09 Сентября 2004, 22:42:48
Как в базу может записаться Name, если $name = "Name\'s"!!!
Название: addslashes
Отправлено: Макс от 09 Сентября 2004, 23:02:59
chaosstorm
а какое было предыдущее значение ? Name ?
Может оно просто не изменилось ?
mysql_query($query) or die(mysql_error());
что-то выводит ?
Название: addslashes
Отправлено: chaosstorm от 09 Сентября 2004, 23:07:04
mysql_query($query) or die(mysql_error())
ничего не вывело!

поп овду предыдущего значения:
$name = "Name\'s";
Название: addslashes
Отправлено: Макс от 09 Сентября 2004, 23:30:28
Цитировать
chaosstorm:
поп овду предыдущего значения: $name = "Name\'s";

я имел ввиду, какое было значение в таблице, до твоего запроса ?
Название: addslashes
Отправлено: chaosstorm от 09 Сентября 2004, 23:35:40
Макс
было значение(например): NameName
Название: addslashes
Отправлено: Макс от 10 Сентября 2004, 00:52:33
Цитировать
chaosstorm:
было значение(например):

ты уверен, что там не было значения "Name" ???
что выводит :

mysql_query($query) or die(mysql_error());
echo  mysql_affected_rows();
?
Название: addslashes
Отправлено: Меняздесьдавнонет от 10 Сентября 2004, 09:05:03
Макс, ты хотя бы объясни ему, ЧТО ты пытаешься делать
Может быть, пару циклов отладки он все-таки сам сподобится?
Название: addslashes
Отправлено: chaosstorm от 10 Сентября 2004, 09:06:50
Макс
Ситуация такая:

было NameName
$name = "Name\'Names";

$name = addaslashes($name);

$query = "UPDATE tableanme SET columname=\'$name\' where id=1";
mysql_query($query) or die(mysql_error());
echo  mysql_affected_rows();


Выводит 1 а в базу данных обновляет как: Name, остальное отсекаеться!
Название: addslashes
Отправлено: tserbis от 10 Сентября 2004, 09:35:28
[OFF]chaosstorm, а у тебя таблица называется именно tableanme? Если нет, то ты, наверное, приводишь код, написанный руками, а не copy-paste\'ишь, а это, похоже, в данной ситуации неправильно и может мешать желающим помочь тебе.[/OFF]
Название: addslashes
Отправлено: chaosstorm от 10 Сентября 2004, 16:44:19
ПРиношу извинения, просто думал что на простейшем примере мою проблему решить будет легче. Привожу реальный код:
$title = $_REQUEST[\'title\'][$i];
$title = AddSlashes($title);
$subtitle = $_REQUEST[\'subtitle\'][$i];
$subtitle = addslashes($subtitle);
$distributor = $_REQUEST[\'distributor\'][$i];
$distributor = addslashes($distributor);
$query = "UPDATE filmpremiere SET dataINO=\'$dataINO\', dataRU=\'$dataRU\', title=\'$title\', subtitle=\'$subtitle\', distributor=\'$distributor\' where id=$id";
mysql_query($query) or die(mysql_error());
Название: addslashes
Отправлено: tserbis от 10 Сентября 2004, 16:58:10
Следующий ход:

$title = $_REQUEST[\'title\'][$i];
echo \'
\' . htmlspecialchars($title, ENT_QUOTES);
$title = AddSlashes($title);
echo \'
\' . htmlspecialchars($title, ENT_QUOTES);
Название: addslashes
Отправлено: chaosstorm от 10 Сентября 2004, 17:05:06
Вывел:

Lemony Snicket\'s A Series of Unfortunate Events
Lemony Snicket\\\'s A Series of Unfortunate Events

Однако в базе данных только:
Lemony Snicket
Название: addslashes
Отправлено: tserbis от 10 Сентября 2004, 17:12:42
if ( ! ($resid = mysql_query(\'
    SELECT title
    FROM filmpremiere
    WHERE title LIKE "%Lemony%"
\')) ) {
    echo mysql_error();
} # if
else {
    while ( $arr = mysql_fetch_assoc($resid) ) {
        echo \'
\' . htmlspecialchars($arr[\'title\'], ENT_QUOTES)
    }; # while
}; # else
Название: addslashes
Отправлено: Меняздесьдавнонет от 10 Сентября 2004, 17:43:30
вот теперь - в десятку.
Название: addslashes
Отправлено: chaosstorm от 10 Сентября 2004, 17:49:37
tserbis
Так проверил ещё раз, теперьв базе данных:
Lemony Snicket\'s A Series of Unfortunate Events

А разве не должно быть Lemony Snicket\\\\\'s A Series of Unfortunate Events?
Название: addslashes
Отправлено: Меняздесьдавнонет от 10 Сентября 2004, 17:53:51
chaosstorm
неужели так трудно СКОПИРОВАТЬ тот код, который тебе дали?
Название: addslashes
Отправлено: Меняздесьдавнонет от 10 Сентября 2004, 17:55:10
А вообще, специально для тебя написано ОЧЕНЬ ВАЖНОЕ ЗАМЕЧАНИЕ (http://phpfaq.ru/na_tanke#achtung)
Название: addslashes
Отправлено: chaosstorm от 10 Сентября 2004, 18:21:56
Такс! Походу разобрался! =)

Если я вас правильно понял, то у меня должно быть так:

ВВОД:
$title = $_REQUEST[\'title\'][$i];
$title = AddSlashes($title);
$query = "UPDATE filmpremiere SET dataINO=\'$dataINO\', dataRU=\'$dataRU\', title=\'$title\', subtitle=\'$subtitle\', distributor=\'$distributor\' where id=$id";
mysql_query($query) or die(mysql_error());

ВЫВОД:
$title = stripslashes($row[\'title\']);
echo "";

Так?
То есть с точки зрения применения функций addslashes() и strislashes() всё верно? И в базу данных записывается именно так, как положено?
Название: addslashes
Отправлено: Меняздесьдавнонет от 10 Сентября 2004, 18:28:44
Цитировать
chaosstorm:
То есть с точки зрения применения функций addslashes() и strislashes() всё верно

нет, все неверно.
как верно - написано в факе
Название: addslashes
Отправлено: Меняздесьдавнонет от 10 Сентября 2004, 18:37:26
до тебя дошло хоть, в чем твоя проблема?
Название: addslashes
Отправлено: chaosstorm от 10 Сентября 2004, 18:59:43
Почему неверно?
Дошло, но не до конца! =)
Название: addslashes
Отправлено: Меняздесьдавнонет от 10 Сентября 2004, 19:09:18
читай еще раз ссылку, которую я тебе дал.
там специально для тебя написан второй абзац, последний в тексте.
Авось дойдет.
А потом найди там фак про слеши, и прочти, почему ты совершенно неправильно работаешь с ними.
Название: addslashes
Отправлено: chaosstorm от 10 Сентября 2004, 19:11:17
Ну вот, теперь дошло вроде! =)
Сразу дал бы ссылку на ОЧЕНЬ ВАЖНОЕ ЗАМЕЧАНИЕ и на PHPFAQ.RU!
Было бы сразу ясно!

И зачем тогда везде пишут, что stripslashes() надо применять, когда из базы вытаскиваешь?
Название: addslashes
Отправлено: Меняздесьдавнонет от 10 Сентября 2004, 19:15:47
И что же тебе стало ясно? Не поленись объяснить.

А про stripslashes() при доставании из базы пишут не везде. а только круглые идиоты.
Название: addslashes
Отправлено: chaosstorm от 10 Сентября 2004, 19:36:41
А ясно мне то что написано в ОЧЕНЬ ВАЖНОМ ЗАМЕЧАНИИ и на PHPFAQ.RU!!!
Вот собственно и всё! =)

Постараюсь больш не делать подобных ошибок!
Название: addslashes
Отправлено: Меняздесьдавнонет от 10 Сентября 2004, 19:40:17
Нет ты скажи - в чем была твоя проблема?
Своими словами можешь?

Что ты сделаешь первое, когда подобная проблема появится еще раз?