При добавлении текста в котором встречается апостроф в БД Он не добавляется
$name = "комп'ютерні науки";
$query = "UPDATE `pages` SET `name`='$name' WHERE `id`='1'";
$result = mysql_query($query);
Как решить эту проблему ? слешами не думаю что выход в тексте то много может быть таких апострофов.
Спустя 5 минут, 40 секунд (22.12.2009 - 16:01) Gabriel написал(а):
mysql_real_escape_string()?
Спустя 8 минут, 8 секунд (22.12.2009 - 16:09) WhiteKnight написал(а):
mysql_real_escape_string($name) ?
а куда добавятся слеши ? сами там где надо чтоли ?
а куда добавятся слеши ? сами там где надо чтоли ?
Спустя 1 минута, 52 секунды (22.12.2009 - 16:11) sergeiss написал(а):
WhiteKnight - а ты проверять не пробовал?
Спустя 2 минуты, 1 секунда (22.12.2009 - 16:13) Gabriel написал(а):
sergeiss
опередил меня
WhiteKnight
в тексте никаких слешей не будет
опередил меня
WhiteKnight
в тексте никаких слешей не будет
Спустя 12 минут, 18 секунд (22.12.2009 - 16:25) sergeiss написал(а):
WhiteKnight - поясняю. "Лишние" слэши являются "управляющими". Т.е., на момент записи данных они сообщают дополнительную информацию.
Это (отчасти) подобно использованию форматов в функции printf. Пишем %s - на выходе получаем строку, и никакого процента с буквой; пишем %d - получаем число.
Так и тут: добавляется слэш, но в итоговой строке (которая будет записана) его не будет.
Это (отчасти) подобно использованию форматов в функции printf. Пишем %s - на выходе получаем строку, и никакого процента с буквой; пишем %d - получаем число.
Так и тут: добавляется слэш, но в итоговой строке (которая будет записана) его не будет.
Спустя 6 минут, 9 секунд (22.12.2009 - 16:32) WhiteKnight написал(а):
пробую...
вот код аддейта странички
вывод содержимого для страницы
не хочет вообще обновляться в бд запись если контент который я хочу добавить вот такой: комп'ютерні
вот код аддейта странички
// редактировать страницы
function cms_page_edit($id_edit,$name_to_update,$content_to_update) {
$query = "UPDATE `cms_pages` SET `name`='$name_to_update' WHERE `id`='$id_edit'";
$result = mysql_query($query);
$query = "UPDATE `cms_pages` SET `content`='$content_to_update' WHERE `id`='$id_edit'";
$result = mysql_query($query);
}
вывод содержимого для страницы
// контент странички
function cms_page_content($id) {
// это умная такая проверка вывести или первую страницу или ту что надо
if ($id == NULL) {
$query = "SELECT * FROM `cms_pages` ORDER BY `id` ASC limit 1 ";
} else {
$query = "SELECT * FROM `cms_pages` WHERE `id`='{$id}'";
}
$result = mysql_query($query);
while ($row = cms_db_rows($result)) {
return mysql_real_escape_string($row['content']);
}
}
не хочет вообще обновляться в бд запись если контент который я хочу добавить вот такой: комп'ютерні
Спустя 3 минуты, 6 секунд (22.12.2009 - 16:35) WhiteKnight написал(а):
все решил
если есть какая то критика по поводу этого кода, критикуйте )
// контент странички
function cms_page_content($id) {
if ($id == NULL) {
$query = "SELECT * FROM `cms_pages` ORDER BY `id` ASC limit 1 ";
} else {
$query = "SELECT * FROM `cms_pages` WHERE `id`='{$id}'";
}
$result = mysql_query($query);
while ($row = cms_db_rows($result)) {
return $row['content'];
}
}
// редактировать страницы
function cms_page_edit($id_edit,$name_to_update,$content_to_update) {
$query = "UPDATE `cms_pages` SET `name`='$name_to_update' WHERE `id`='$id_edit'";
$result = mysql_query($query);
$content_to_update = mysql_real_escape_string($content_to_update);
$query = "UPDATE `cms_pages` SET `content`='$content_to_update' WHERE `id`='$id_edit'";
$result = mysql_query($query);
}
если есть какая то критика по поводу этого кода, критикуйте )
Спустя 7 минут, 8 секунд (22.12.2009 - 16:42) Michael написал(а):
$query = "UPDATE `cms_pages` SET `name`='$name_to_update' WHERE `id`='$id_edit'";
$result = mysql_query($query);
$content_to_update = mysql_real_escape_string($content_to_update);
$query = "UPDATE `cms_pages` SET `content`='$content_to_update' WHERE `id`='$id_edit'";
$result = mysql_query($query);
Измени на:
$content_to_update = mysql_real_escape_string($content_to_update);
$query = "UPDATE `cms_pages` SET name`='$name_to_update',`content`='$content_to_update' WHERE `id`='$id_edit'";
$result = mysql_query($query);
Спустя 3 часа, 36 минут, 51 секунда (22.12.2009 - 20:19) VolCh написал(а):
$name_to_update = mysql_real_escape_string($name_to_update);
Тоже по хорошему надо добавить, мало ли
Спустя 9 минут, 5 секунд (22.12.2009 - 20:28) Gabriel написал(а):
ну тогда и я впихну мои 5ть копеек
$name_to_update = mysql_real_escape_string( $name_to_update );
$content_to_update = mysql_real_escape_string( $content_to_update );
$id_edit = intval( $id_edit );
$query = "UPDATE `cms_pages` SET name`='" . $name_to_update . "',`content`='" . $content_to_update . "' WHERE `id`='" . $id_edit . "'";
Спустя 2 часа, 18 минут, 43 секунды (22.12.2009 - 22:46) WhiteKnight написал(а):
мистика какая то. незнаю что делать
на компе все норм! кавычки и апострофы нормально добавляются!
залил все на хостинг (дамп БД) отображается отлично(выгружается с бд и показывает мне на страничке)
Как только в админке редактирую страницу: function cms_page_edit
То все портится и возле каждой кавычки стоят слеши.
если еще раз делаю редактирование страницы и сохраняю в БД (НА ХОСТИНГЕ) то добавляется еще один слеш и так далее и выходит вот такое
комп///////'ютерні науки
на компе все норм! кавычки и апострофы нормально добавляются!
залил все на хостинг (дамп БД) отображается отлично(выгружается с бд и показывает мне на страничке)
Как только в админке редактирую страницу: function cms_page_edit
То все портится и возле каждой кавычки стоят слеши.
если еще раз делаю редактирование страницы и сохраняю в БД (НА ХОСТИНГЕ) то добавляется еще один слеш и так далее и выходит вот такое
комп///////'ютерні науки
Спустя 6 минут, 12 секунд (22.12.2009 - 22:53) VolCh написал(а):
отключи magic_quotes на сервере
Спустя 41 минута, 34 секунды (22.12.2009 - 23:34) phz написал(а):
Или можно не отключать:
function quote_smart($value)
{
// если magic_quotes_gpc включена - используем stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
$value = strip_tags($value);
}
// Если переменная - число, то экранировать её не нужно
// если нет - то окружем её кавычками, и экранируем
if (!is_numeric($value)) {
$value = strip_tags($value);
$value = mysql_real_escape_string($value);
}
return $value;
}
Спустя 9 минут, 35 секунд (22.12.2009 - 23:44) FatCat написал(а):
Цитата (phz @ 23.12.2009 - 00:34) |
if (!is_numeric($value)) { |
Лучше я думаю будет:
if (intval($value) == $value)$value = intval($value);
else $value = mysql_real_escape_string($value);
А зачем strip_tags? Чтобы джаваскрипт не подпихнули? Так в этом случае и все форматирование убьётся...
Спустя 13 часов, 32 минуты, 21 секунда (23.12.2009 - 13:16) Gabriel написал(а):
WhiteKnight
а версия пыхи какая на хосте?
а версия пыхи какая на хосте?