2013-05-10 26 views
1

我想實現的是在一個表內的兩行之間移動數據。php腳本使用mysql在列之間移動數據

Column A 
-------- 
FN2 
1 200x310mm 
2 400x260mm[+0.84] 
3 500x500mm[+11.34] 

Column B 
-------- 
0.0000 
0.0000  
0.0000  
0.0000 

這是應該的樣子後的數據移動:

Column A 
-------- 
FN2 
1 200x310mm 
2 400x260mm 
3 500x500mm 

Column B 
-------- 
0.0000 
0.0000  
+0.84  
+11.34 

我想的是,[]移動到B列,並替換0.0000

之間的查詢我怎樣才能做到這一點?

親切的問候

+0

是否要將所有數據的columnA ColumnB分別? – 2013-05-10 15:21:05

+0

只有兩個[]之間的內容,請參閱上面示例中的最後一項。 – Wouter 2013-05-10 15:22:05

+0

然後您首先獲取所有記錄,然後用[]檢查列的每個字段,然後將其替換爲 – 2013-05-10 15:25:30

回答

0

試試這個它爲你在這裏,我用id作爲唯一鍵...和測試是我的數據庫

<?php 
    $con=mysql_connect("localhost","root",""); 
    $db=mysql_select_db("test"); 
    $query=mysql_query("SELECT * FROM test where columnA LIKE '%[%]'"); 
    while($row=mysql_fetch_assoc($query)) 
    { 
     if(preg_match_all('/\[(.*?)\]/',$row['columnA'],$match)) 
     {    
      mysql_query("UPDATE test SET columnB='".$match[1][0]."' WHERE id=".$row['id'].""); 
     } 
    } 

?> 
+0

這裏測試是表名 – 2013-05-10 16:49:54

1

只是想說明什麼亞達夫說

$query = "SELECT columnID, columnA FROM table"; 
$result = mysql_query($query,$conn); 

while ($row = mysql_fetch_array($result)){ 

$id = $row['columnID']; 
$a = $row['columnA']; 

$pos1 = strpos($a,"[")+1; 
$pos2 = strpos($a,"]"); 

$b = substr($a,$pos1,$pos2-$pos1); 

$query = "UPDATE table SET columnB = $b WHERE columnID = $id"; 
mysql_query($query,$conn); 


}//end while 

編輯:Yadav明顯提出了一個更好的答案,同時我打字我的...

+0

嗨好邏輯好友 – 2013-05-11 03:33:09

+0

+1這個邏輯:) – 2013-05-11 03:34:33

+1

@YadavChetan:thx,我喜歡你的正則表達式的方法,但我代碼很多人的PHP技能有限,所以我必須保持我的代碼清潔,簡單。 – 2013-05-13 19:08:12