Помогите исправить код php?

12
HR
На сайте с 22.08.2010
Offline
94
749

Помгите исправить код что бы заработало. Хочу массово заменить во всех статьях ссылки на безанкорные. Вот код:

<?php


$db = mysql_connect ("localhost","diplom","C4YkcOa1");
mysql_select_db ("diplom",$db);
mysql_query('SET NAMES cp1251');

$result = mysql_query ("SELECT post_content FROM demo1_posts",$db);
$myrow = mysql_fetch_array ($result);

do
{
$myrow[post_content] = preg_replace( '/<a href="(.*?)">(.*?)<\/a>/US', '${2} <a href="${1}">${1}</a>', $myrow[post_content] );

mysql_query ("UPDATE demo1_posts SET post_content = '$myrow[post_content]'",$db);
}
while ($myrow = mysql_fetch_array ($result));

?>

Но что то не получается заменить массово. Этот код работает только если в запросы добавить WHERE ID = 'цифра'.

ДП
На сайте с 23.11.2009
Offline
203
#1

Этот код вам все тексты заменит на один, вам в update как раз надо добавить ID - чтобы текст заменялся только у обрабатываемой в данной итерации записи.

HR
На сайте с 22.08.2010
Offline
94
#2
Дикий пионер:
Этот код вам все тексты заменит на один, вам в update как раз надо добавить ID - чтобы текст заменялся только у обрабатываемой в данной итерации записи.

Можете код подправить? Я не могу сообразить как сделать. Я этот по крупицам собрал еле как.

---------- Добавлено 04.08.2015 в 12:29 ----------

Попробовал так, тоже не получается:


<?php

$db = mysql_connect ("localhost","diplom","C4YkcOa1");
mysql_select_db ("diplom",$db);
mysql_query('SET NAMES cp1251');

$result = mysql_query ("SELECT post_content FROM demo1_posts",$db);
$myrow = mysql_fetch_array ($result);
$i = 1;
do
{
$myrow2 = preg_replace( '/<a href="(.*?)">(.*?)<\/a>/US', '${2} <a href="${1}">${1}</a>', $myrow[post_content] );

mysql_query ("UPDATE demo1_posts SET post_content = '$myrow2' WHERE ID ='$i'",$db);
$i++;
}
while ($myrow = mysql_fetch_array ($result));

?>
R
На сайте с 20.02.2015
Offline
59
#3


$db = mysql_connect ("localhost","diplom","C4YkcOa1");
mysql_select_db ("diplom", $db);
mysql_query("SET NAMES 'cp1251'");

$result = mysql_query ("SELECT `post_content` FROM `demo1_posts`");
// использовать надо mysql_fetch_assoc если результат нужен не числовой индекс
while ($row = mysql_fetch_assoc($result)) {
// $row['post_content'] - контент
// почитайте про строковые типы данных а именно их синтаксис
$row['post_content'] = preg_replace("/<a\s([^>]*)>(.*?)<\/a>/US", "<a \\1>\\2</a>", $row['post_content']);

echo($row['post_content']);
}

?>
HR
На сайте с 22.08.2010
Offline
94
#4
rereg:

$db = mysql_connect ("localhost","diplom","C4YkcOa1");
mysql_select_db ("diplom", $db);
mysql_query("SET NAMES 'cp1251'");

$result = mysql_query ("SELECT `post_content` FROM `demo1_posts`");
// использовать надо mysql_fetch_assoc если результат нужен не числовой индекс
while ($row = mysql_fetch_assoc($result)) {
// $row['post_content'] - контент
// почитайте про строковые типы данных а именно их синтаксис
$row['post_content'] = preg_replace("/<a\s([^>]*)>(.*?)<\/a>/US", "<a \\1>\\2</a>", $row['post_content']);

echo($row['post_content']);
}

?>

Это не то. Мне же нужно перезаписать. тут нету UPDATE.

R
На сайте с 20.02.2015
Offline
59
#5

HEMASTER, Уникальный ID записи есть в таблице?

HR
На сайте с 22.08.2010
Offline
94
#6
rereg:
HEMASTER, Уникальный ID записи есть в таблице?

Да, конечно. Сайт на wordpress.

R
На сайте с 20.02.2015
Offline
59
#7


<?php
$db = mysql_connect ("localhost","diplom","C4YkcOa1");
mysql_select_db ("diplom", $db);
mysql_query("SET NAMES 'cp1251'");

$result = mysql_query ("SELECT `ID`,`post_content` FROM `demo1_posts`");
// использовать надо mysql_fetch_assoc если результат нужен не числовой индекс
while ($row = mysql_fetch_assoc($result)) {
// $row['post_content'] - контент
// почитайте про строковые типы данных а именно их синтаксис
$row['post_content'] = preg_replace("/<a\s([^>]*)>(.*?)<\/a>/US", "<a \\1>\\2</a>", $row['post_content']);
mysql_query ("update `demo1_posts` set `post_content` = '".mysql_real_escape_string($row['post_content'])."' where `ID` = ".intval($row['ID']));
if (mysql_affected_rows())
echo("post id: {$row['ID']} update success\n");
}
?>
alexbalance
На сайте с 17.02.2012
Offline
57
#8

а print_r($myrow) что выдает?

HR
На сайте с 22.08.2010
Offline
94
#9

Спасибо, rereg. В моем коде в запросе не было "взять ID". Вот рабочий код:


<?php

$db = mysql_connect ("localhost","diplom","C4YkcOa1");
mysql_select_db ("diplom",$db);
mysql_query('SET NAMES cp1251');

$result = mysql_query ("SELECT post_content,ID FROM demo1_posts",$db);
$myrow = mysql_fetch_array ($result);

do
{
$myrow2 = preg_replace( '/<a href="(.*?)">(.*?)<\/a>/US', '${2} <a href="${1}">${1}</a>', $myrow[post_content] );

mysql_query ("UPDATE demo1_posts SET post_content = '$myrow2' WHERE ID ='$myrow[ID]'",$db);

}
while ($myrow = mysql_fetch_array ($result));

?>
R
На сайте с 20.02.2015
Offline
59
#10


mysql_query ("UPDATE demo1_posts SET post_content = '$myrow2' WHERE ID ='$myrow[ID]'",$db);

На этом участке SQL не ругается? строку $myrow2 надо экранировать функцией mysql_real_escape_string

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий