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

Форум MySQL

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

 

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

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

тема: update записать в базу обрезаный текст
 
 автор: vorobey   (03.05.2009 в 21:34)   письмо автору
 
 

В таблице надо вырезать часть пути ссылки $pattern выражение написал-работает.
Но правильно выводит на экран строки БЫЛО , СТАЛО , a ЗАПИСАЛО ВЫВОДИТ Resource id #6
(в базу записывает arrey.)

<?php  include ("bd.php");
$pattern'/src=\"http[:]\/\/[a-z0-9]{0,20}[.][a-z]{0,20}[.]ru\/[a-z0-9]{0,6}\/[a-z0-9]{0,6}\//';
$result=mysql_query("SELECT story from post  ");

 while (
$row=mysql_fetch_array ($result))
 {
  echo 
"<br>БЫЛО:<hr>",$row[story] ;

  
$text[story]=preg_replace($pattern  ,"src=\"http://\""  ,$row[story] ); 
  echo 
"СТАЛО:<br>",$text[story];

  
mysql_query("UPDATE post SET story='$text'  ");

  
$result1[story]=mysql_query("SELECT full_story from post  ");
  echo 
"ЗАПИСАЛО:<br>",$result1[story];     
 }
?>

ps регулярное выражение правильное 100% .

  Ответить  
 
 автор: Trianon   (03.05.2009 в 21:36)   письмо автору
 
   для: vorobey   (03.05.2009 в 21:34)
 

В базу записывает ровно то что просите .
echo $text;
mysql_query("UPDATE post SET story='$text' ");

  Ответить  
 
 автор: vorobey   (03.05.2009 в 21:43)   письмо автору
 
   для: Trianon   (03.05.2009 в 21:36)
 

это я проверял и скопировал неглядя
если пишу как надо
mysql_query("UPDATE post SET story='$text[story] ' ")
то в базу записывается одна единственная запись во все поля и берется этот текст гдето с конца базы

  Ответить  
 
 автор: Trianon   (03.05.2009 в 21:51)   письмо автору
 
   для: vorobey   (03.05.2009 в 21:43)
 

не с конца.
Берется каждая строка, переделывается, и записывается во все строки.
Понятное дело, что в конце концов в базе остается одна, та которая обрабатывалась последней.
Всё потому, что в операторе update Вы не указываете, в какую строку писать поле.
Вот он и пишет во все без ограничений.

Чтобы указать строку, в которую помещать поле, нужно первым оператором SELECT не только поле вытащить, но и ключ строки. По возможности - первичный.

  Ответить  
 
 автор: vorobey   (04.05.2009 в 09:57)   письмо автору
 
   для: Trianon   (03.05.2009 в 21:51)
 

Указал явно id хотя бы один.
<?php  include ("bd.php");
$pattern"/src=\"http[:]\/\/[a-z0-9]{0,20}[.][a-z]{0,20}[.]ru\/[a-z0-9]{0,6}\/[a-z0-9]{0,6}\//";
$result=mysql_query("SELECT story from post where id='1076' ");
 while (
$row=mysql_fetch_array ($result))
 {
  echo 
"<br>БЫЛО:<br><hr>",$row[story] ;
  
$text=preg_replace($pattern  ,"src=\"http://\""  ,$row[story] ); 
  echo 
"<br>СТАЛО:<br><hr>",$text;
 
mysql_query("UPDATE post SET story='$text' where id='1076'");
 }
?>

ничего вообще в базу не заносит , а на экран все ок
Может как то массив сделать? что ему еще надо?

  Ответить  
 
 автор: Trianon   (04.05.2009 в 10:43)   письмо автору
 
   для: vorobey   (04.05.2009 в 09:57)
 

вообще-то $text нужно обработать mysql_escape_string() перед помещением в запрос.
А после запроса следует проконтролиоровать его результат.

  Ответить  
 
 автор: vorobey   (04.05.2009 в 20:14)   письмо автору
 
   для: Trianon   (04.05.2009 в 10:43)
 

Спосибо большое. Забыл про
mysql_escape_string()
записал так:

mysql_query("UPDATE post SET story = '".mysql_escape_string($text)."' WHERE ID='$i'");

все работает.

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

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