Ahmadz Issa
Ahmadz Issa

Reputation: 765

Copy column values to another column in the same table

I'm trying to copy title column to keywords column in database, so the keywords will be inserted automatically from the title.

http://store2.up-00.com/2015-06/1435609110941.png

I want to add comma ', ' before each word for example.

" It's my first program "   

it will turn into

" It's, my, first, program, "

This the code I wrote.

<?php

  // $id =mysql_insert_id;
  $select_posts = mysql_query("SELECT * FROM `posts`");

  while($row = mysql_fetch_array($select_posts)){
        $id  = $row['post_id'];
        $text =  $row['post_title'];  

       $delim = ' \n\t,.!?:;';
       $tok = strtok($text, $delim);


    while ( $tok !== false){
          echo $tok1 = $tok.',';
          mysql_query("UPDATE `posts` SET  `post_keywords` =  '$tok1' WHERE `post_id` = $id  ");
          $tok = strtok($delim);
        }   
}

?>    

it insert the last word in each title column , because the words is overwritten by while loop.

Please help me .

Upvotes: 1

Views: 919

Answers (2)

Marc B
Marc B

Reputation: 360572

Concat the values:

... SET post_keywords = CONCAT(post_keywords, '$tok1')

and note that you're vulnerable to sql injection attacks. Just because that $tok1 value came out of a database doesn't mean it's safe to REUSE in a query...

Upvotes: 1

bignick
bignick

Reputation: 121

You can do it with a single query :

UPDATE `posts` SET post_keywords = REPLACE(post_title, ' ', ',');

Upvotes: 0

Related Questions