2015-04-15 70 views
-1

我將問題簡化爲簡單狀態。爲什麼更新命令不能執行?

mysql> select * from `table`; 
+--------+---------+ 
| f1  | f2  | 
+--------+---------+ 
| hallo | welcome | 
| string | array | 
+--------+---------+ 
2 rows in set (0.00 sec) 

我想將表格更改爲以下結果。

mysql> select * from `table`; 
+--------+------- --+ 
| f1  | f2   | 
+--------+---------+ 
| hallo | welcomehaha | 
| string | arrayhaha | 
+--------+------- --+ 
2 rows in set (0.00 sec) 

這是我的代碼。

<?php 

    header("Content-Type: text/html; charset=gbk"); 
    $db=new PDO("mysql:host=localhost;dbname=test","root",""); 

$statement1=$db->prepare("select f1,f2 from `table`"); 
$statement1 -> execute(); 
while($row=$statement1->fetch()){ 
    $new_content=$row["f1"]; 
    $new_f2=$row['f2'].'haha'; 
    echo $new_f2.'</br>'; 
    $statement2=$db->prepare("update `table` set f2=$new_f2 where f1={$row['f1']}"); 
    $statement2 -> execute(); 
    }  
?> 

輸出是:

welcomehaha 
arrayhaha 

f2值沒有改變,爲什麼不update 'table' set f2=$new_f2 where f1={$row['f1']}正在執行?

+2

因爲,你有沒有引用你的價值;他們是字符串。另外,你不檢查錯誤。 –

+0

'...設置f2 = 123haha' ...你的桌子上有一個123haha字段嗎? –

回答

0

你都必須由單引號之間「」你的價值,因爲它是文字可能是類似的東西

$statement2=$db->prepare("update `table` set f2='$new_f2' where f1='{$row['f1']}'"); 
0
$statement2=$db->prepare("update `table` set `f2`=concat(`f2`,'haha');"); 
+0

請提供更多解釋來幫助理解,而不是僅僅給他答案。 – Johnride

相關問題