2014-01-28 5 views
0

Во-первых, извините за мой английский. Я новичок в этих вещах, и у меня есть простой вопрос. Я храню данные в mysql. Один столбец содержит данные в формате (например): a, b, c, d или a, c, d или a, d ... Теперь, после запроса, я хочу изменить это значение: php, преобразование данных mysql

 a = apple, b=blueberry, c=cat, d=dog ...

например, если столбец содержит

 a,d,
Я хочу изменить и распечатать яблоко, собаку ...

Еще раз, извините за мой английский. Пожалуйста, спросите, не ответил ли вопрос.

спасибо.

+0

У вас есть такой предопределенный массив? – Rikesh

+0

Для этой цели вы можете использовать «словарь». SOmething с ключевой стоимостью. Словарь может содержаться в базе данных или статически реализовываться внутри ваших скриптов. – arkascha

ответ

2
$map = array('a' => 'apple', 'b'=>'blueberry', 'c'=>'cat', 'd'=>'dog'); 

$column = 'a,d'; //your data here 

$result = strtr($column, $map); 

обновление:

$arr = explode(',', $result); 
$links = array(); 
foreach($arr as $item) { 
$links[] = $commonURLpart . $item; 
} 
+0

Это почти идеально подходит для меня. Еще одна вещь отсутствует. Я хочу создать отдельные ссылки из $ result. – user3244472

+0

'$ arr = explode (',', $ result); foreach ($ arr как $ item) {$ links [] = $ commonURLpart. $ Пункт; } ' –

0

вы можете использовать, если условие, чтобы сделать это, вам нужно пользовательские значения, например

<?PHP 
---prev code 

$db_col  = strtolower($row['col']); 
if($db_col=='a'){ 
    echo 'Apple'; 
}elseif($db_col=='b'){ 
    echo 'Blueberry' ; 
so on ........ 
?> 
1

Вы можете воспользоваться силой функции REPLACE() строки: Использование:

REPLACE(str,from_str,to_str) 

Возвраты строка str со всеми вхождениями строки from_str заменена на строку to_str. Также REPLACE() выполняет с учетом регистра соответствует при поиске from_str.

URL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html

Например: SELECT REPLACE('www.mysql.com', 'w', 'Ww'); будет выводить WwWwWw.mysql.com

Обновление: Метод выше изменяет содержание во время выполнения на уровне MySQL. Если это не имеет значения, вы можете изменить содержимое своего вывода во время runtime с простой строкой PHP, замените магию, используя str_replace() PHP-функцию. Таким образом, вы сохраните исходные данные в базе данных без изменений и вы выведете нужные замещенные строки.

+0

Вот и получится, если словарь вырастет ... – arkascha

1

Я предлагаю вам создать еще одну таблицу, как:

+--------+-----------+ 
| letter | word  | 
+--------+-----------+ 
| a  | apple  | 
| b  | blueberry | 
| c  | cat  | 
| d  | dog  | 
+--------+-----------+ 

, а затем сделать запрос с соединением подобное, как это:

SELECT 
    * 
FROM 
    `table1` as t1 
JOIN 
    `table2` as t2 
ON 
    t1.letter = t2.word 

Это автоматически преобразует ваше письмо в нужные слова.

PS: Я мог бы сделать запрос более понятным, если бы вы могли опубликовать пример своих исходных данных таблицы.

+0

Ваше решение так же хорошо для меня, но я не совсем понимаю. Данные хранилища столбцов в этом формате «a, b, c, d» – user3244472

+0

Как выглядит исходная таблица? – Peon

0

Я предполагаю, что у вас есть результат запроса в ассоциативном массиве ...

так, первая вещь «велосипедный» массив:

while($row = mysql_fetch_assoc($replace_with_name_of_associative_array)) 
{ 
    if (strtolower($row['repalace_with_column_name'])=='a'){ //strtolower just in case you have "A" and "a", "B" and "b",... 
    echo 'Apple'; 
    }elseif(strtolower($row['repalace_with_column_name'])=='b'){ 
    echo 'Blueberry'; 
    } 
    //and so on... 

} 
Смежные вопросы