Вставка строки в запись .... php ... mysql - PullRequest
1 голос
/ 13 октября 2011

Мой руководитель дал мне задание по PHP и SQL, и я пытался решить его, но все безрезультатно.Как я могу обновить записи в моей таблице, добавив строку в указанное поле?Например, если запись в столбце / поле «P000M000D000».Как я могу добавить «0» перед «М» или «D» без замены всей строки.Запрос UPDATE заменит всю запись в этом столбце добавленной строкой, и я не хочу этого.

Кто-нибудь знает строковую функцию, которую мне нужно использовать?

Кельвин

Ответы [ 3 ]

2 голосов
/ 13 октября 2011

MySQL имеет множество изящных строковых функций: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html

Я бы использовал подход M и D в качестве разделителя и извлекать часть до и после использованияsubstring_index.
Обратите внимание, что substring_index является чувствительным к регистру .

SET @sampledata = 'P111M2222D3333';
UPDATE table1 
SET col1 
    = CONCAT(substring_index(@sampledata, 'M', 1), '0M'                    /*P1110M*/
            ,substring_index(substring_index(@sampledata, 'D', 1), 'M',-1) /*222*/
            ,'0D' ,substring_index(@sampledata, 'D',-1))                   /*0D333*/
WHERE col2 = 1234;
1 голос
/ 13 октября 2011

Поскольку вы новичок, я рекомендую сделать это в три этапа:

1. Извлеките поле из таблицы, которую хотите обновить.

$query  = "SELECT name FROM contact where uid=123";
$result = mysql_query($query);
$row=mysql_fetch_array($result);
$name=$row['name'];   

2. Используйте строковые функции PHP для изменения значения любым удобным для вас способом.

$fname = preg_split("/[\s]+/", $name); //splits on any number of space chars

3. Используйте простой запрос на обновление.

$query  = "update contact set name='$fname' where uid=123";
$result = mysql_query($query);
0 голосов
/ 13 октября 2011

Используйте функцию replace, где вы можете указать строку поиска и строку замены в столбце.Обязательно ограничивайтесь предложением where.

update tablename set colname = replace(colname,searchstring,replacestring) where something=something

replace описано в документации MySQL .

...