Как выбрать из одного поля бд(mysql) записи,обработать их и записать в другое поле?

гипноЖаба

Постоялец
Регистрация
22 Апр 2009
Сообщения
72
Реакции
19
Подскажите,есть таблица categories, нужно выбрать из поля names запись транслитерировать её и записать ее в поле ink_rewrite этой же таблицы.
вот код,который у меня не получается,просто не добавляются записи:
PHP:
$host='localhost';
$database='truba';
$user='delo_truba';
$pswd='123456789';
 
function ru2Lat($string)
{
$rus = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я');
$lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA');
$string = str_replace($rus,$lat,$string);
$string = strtr($string,
    "АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭабвгдезийклмнопрстуфхъыьэ",
    "ABVGDEZIJKLMNOPRSTUFH_I_Eabvgdezijklmnoprstufh_i_e");
 
return($string);
}
 
$res = mysql_query('SELECT * FROM categories');
while($row = mysql_fetch_array($res)) {
    $name = ru2Lat($row[' names ']);
    mysql_query('UPDATE  categories  SET link_rewrite = \''.$name.'\' WHERE id = '.$row['`id_category`']);
}
 
как минимум, запрос должен производиться с соблюдением синтаксиса:
PHP:
$name = ru2Lat($row['names']); //пробелов внутри квадратных скобок не должно быть! Иначе они учитываются как символ в названии поля!
  mysql_query('UPDATE ps_category_lang SET `link_rewrite` = '".$name."' WHERE `id` = '".$row['id_category']."');
кроме того инфу вы берете в одной таблице: categories , а изменить пытаетесь в другой: ps_category_lang
 
исправил название,но никак не могу понять ошибку,понимаю,что ошибка скорее всего в экранировании символов,логика сама правильная
 
Если сервер хоть как то ругается на ваш скрипт, то выложите текст ошибки...
 
parse error и на строке
PHP:
  mysql_query('UPDATE  categories SET `link_rewrite` = '".$name."' WHERE `id` = '".$row['id_category']."');
 
попробуйте так:
PHP:
 mysql_query("UPDATE  categories SET `link_rewrite` = '".$name."' WHERE `id` = '".$row['id_category']."'");
 
ошибка была в условии
PHP:
WHERE `id` = '".$row['id_category']
надо было изменить id на id_category

пыс.пыс.
теперь когда конвертирует из русского на латиницу - записи в неправильной кодировке и отображаются в как знаки вопросов,как победить кодировку?
 
UPDATE categories
SET `link_rewrite` = REPLACE( REPLACE( REPLACE( `names` , 'ж' "zh") , ''я'', "ya") , ''ё'', "yo");
ну и так далее в таком духе
 
Назад
Сверху