Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не сохраняет в базу текст в 12 кбайт??
 
 автор: Alex Boxgorn   (11.11.2008 в 13:08)   письмо автору
 
 

Не могу понять что нужно PHP. В переменной $text_top имеется текст (не важно с разметкой HTML или просто текст). Так вот этот объем текста в 12 кбайт не сохраняется в базу.
Делаю следующее:
$k300 = "UPDATE tstatiy SET paramalbom='$paramalbom', idalbom='$idalbom', namealbom='$namealbom', a_hiden='$a_hiden', bigsize='$bigsize', a_view='$a_view', idpage='$idpage', idblok='$idblok', 
     namepage='$namepage', nameblok='$nameblok', zagolovok='$zagolovok', hidenzagolov='$hidenzagolov', 
        align_zagol2='$align_zagol2', korotko='$korotko', text_top='$text_top', dateedit = '$date_edit' WHERE id = '$id'";
$result60 = mysql_query($k300)

Поле text_top имеет тип TEXT.
Может его предельный размер не дает сохранить данные?
Так я пробовал менять на тип LONGTEXT, все также не сохраняет.
Спасибо заранее.

  Ответить  
 
 автор: DEM   (11.11.2008 в 13:15)   письмо автору
 
   для: Alex Boxgorn   (11.11.2008 в 13:08)
 

А если размер текста меньше? тогда норм сохраняет? И попробуйте использовать mysql+escape_string($text_proverki); на все переменные, может ему просто ен нравится какой символ или еще что...

И еще одно... все названия столбцов лучше брать в кавычки ``. то есть попробуйте:

<?
$k300 
"UPDATE `tstatiy` SET `paramalbom`='".$paramalbom."', `idalbom`='".$idalbom."', `namealbom`='".$namealbom."', `a_hiden`='".$a_hiden."', `bigsize`='".$bigsize."', `a_view`='".$a_view."', `idpage`='".$idpage."', `idblok`='".$idblok."',  
     `namepage`='"
.$namepage."', `nameblok`='".$nameblok."', `zagolovok`='".$zagolovok."', `hidenzagolov`='".$hidenzagolov."',  
        `align_zagol2`='"
.$align_zagol2."', `korotko`='".$korotko."', `text_top`='".$text_top."', `dateedit` = '".$date_edit."' WHERE `id` = '".$id."'"
$result60 mysql_query($k300); 
?>

Может и не поможет, но читаймость увеличит :)

  Ответить  
 
 автор: AcidTrash   (11.11.2008 в 13:29)   письмо автору
 
   для: DEM   (11.11.2008 в 13:15)
 

>И еще одно... все названия столбцов лучше брать в кавычки ``. то есть попробуйте:

Зачем? Я здесь в названиях полей ни одного зарезервированного слова MYSQL не вижу.

  Ответить  
 
 автор: DEM   (11.11.2008 в 13:32)   письмо автору
 
   для: AcidTrash   (11.11.2008 в 13:29)
 

На потмо :) Я помню раньше тоже ен видел, а вот когда потратил почти что день на то что бы найти ошидбку в коде и случаяно увидел (точнее просто вот так потсавил кавычки) и всё заработало, я после этого стал их пистьавезде где желательно :)

  Ответить  
 
 автор: elenaki   (11.11.2008 в 13:16)   письмо автору
 
   для: Alex Boxgorn   (11.11.2008 в 13:08)
 

а остальные поля записываются? MySQL не выдает ошибку? а если написать так:


$k300 = "UPDATE tstatiy SET 
paramalbom='".$paramalbom."', 
idalbom='".$idalbom."', 
namealbom='".$namealbom."', 
a_hiden='".$a_hiden."', 
bigsize='".$bigsize."', 
a_view='".$a_view."', 
idpage='".$idpage."', 
idblok='".$idblok."',
namepage='".$namepage."', 
nameblok='".$nameblok."', 
zagolovok='".$zagolovok."', 
hidenzagolov='".$hidenzagolov."',  
align_zagol2='".$align_zagol2."', 
korotko='".$korotko."', 
text_top='".$text_top."', 
dateedit = '".$date_edit."' 
WHERE id = ".$id; 
$result60 = mysql_query($k300) 



и зачем id в кавычках? запрос лучше выполнять так, чтоб видно было, если есть ошибки


mysql_query($k300) or die (mysql_error());

  Ответить  
 
 автор: Alex Boxgorn   (11.11.2008 в 13:36)   письмо автору
 
   для: elenaki   (11.11.2008 в 13:16)
 

Я проверил на ошибки. Различные тексты сохраняет хорошо и разной длины тоже. Но этот текст, на котором я споткнулся имеет внутри вот этот кусок текста содержащий верхнюю кавычку [Ай'м фром зе Раша - I am from the Russia] Я так полагаю, что необходимо применить кавычки с косой чертой (\") чтобы такого больше не повторилось?

  Ответить  
 
 автор: AcidTrash   (11.11.2008 в 13:39)   письмо автору
 
   для: Alex Boxgorn   (11.11.2008 в 13:36)
 

Магические кавычки на сервере включены или выключены?

  Ответить  
 
 автор: Alex Boxgorn   (11.11.2008 в 13:42)   письмо автору
 
   для: AcidTrash   (11.11.2008 в 13:39)
 

Какие кавычки?

  Ответить  
 
 автор: DEM   (11.11.2008 в 13:44)   письмо автору
 
   для: Alex Boxgorn   (11.11.2008 в 13:42)
 

Проверьте все перееменные котрые исопльзуются в запросе так:
$text = mysql_escape_string($text);

  Ответить  
 
 автор: AcidTrash   (11.11.2008 в 13:44)   письмо автору
 
   для: Alex Boxgorn   (11.11.2008 в 13:42)
 

Понятно.
Перед заносом в базу сделайте обработку
if(!get_magic_quotes_gpc()){
$text_top = addslashes($text_top);
}

  Ответить  
 
 автор: Trianon   (11.11.2008 в 14:00)   письмо автору
 
   для: AcidTrash   (11.11.2008 в 13:44)
 

поубивал бы.

  Ответить  
 
 автор: AcidTrash   (11.11.2008 в 14:01)   письмо автору
 
   для: Trianon   (11.11.2008 в 14:00)
 

Хм. За что?

  Ответить  
 
 автор: Trianon   (11.11.2008 в 14:06)   письмо автору
 
   для: AcidTrash   (11.11.2008 в 14:01)
 

Где в Вашем фрагменте видно, что данные взяты непосредственно из $_POST и тому подобных источников?
Где в этой теме было хоть слово об этом же?

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

Вот за это и.

  Ответить  
 
 автор: AcidTrash   (11.11.2008 в 14:11)   письмо автору
 
   для: Trianon   (11.11.2008 в 14:06)
 

Ну извините, конечно, я уж посмел предположить, что переменная $text_top уже взялась из
$_POST[text_top] или $_GET[text_top], где то куском выше. ))

  Ответить  
 
 автор: Alex Boxgorn   (11.11.2008 в 14:15)   письмо автору
 
   для: AcidTrash   (11.11.2008 в 14:11)
 

А это так важно откуда переменная взялась? Я проверил, из POSTа в переменную данные попали корректно, зачем ее тогда указывать?

  Ответить  
 
 автор: AcidTrash   (11.11.2008 в 14:25)   письмо автору
 
   для: Alex Boxgorn   (11.11.2008 в 14:15)
 

Trianon имел ввиду состояние дерективы register_globals.
Если она включена, то опрометчивость принимать данные как $text_top не указывая каким методом она получена, может привести к существенным проблемам.

  Ответить  
 
 автор: Trianon   (11.11.2008 в 14:35)   письмо автору
 
   для: AcidTrash   (11.11.2008 в 14:25)
 

Я имел в виду совсем не это.
Я имел в виду, что опрос get_magic_quotes_gpc() относится к процедуре изъятия данных из $_POST и т.п.
addslashes() относится к формированию текста sql-запроса (хотя и в этом случае mysql_escape_string предпочтительней, но неважно)
А Вы эти две абсолютно ортогональные, независимые по сути вещи упинали в единое целое.

Реакция автора вопроса замечательно подчеркивает результат.

  Ответить  
 
 автор: AcidTrash   (11.11.2008 в 14:42)   письмо автору
 
   для: Trianon   (11.11.2008 в 14:35)
 

Каюсь, правильно подметили ))

  Ответить  
 
 автор: AcidTrash   (11.11.2008 в 13:35)   письмо автору
 
   для: Alex Boxgorn   (11.11.2008 в 13:08)
 

А помимо text_top, остальные данные из этого запроса сохраняются?

  Ответить  
 
 автор: Alex Boxgorn   (11.11.2008 в 14:17)   письмо автору
 
   для: AcidTrash   (11.11.2008 в 13:35)
 

Как классно!! Все здорово работает!!
Вот эта штучка помогла!!
      if(!get_magic_quotes_gpc()){ 
$text_top = addslashes($text_top); 
}

Всем огромное спасибо за помощь!!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования