为什么不能执行更新命令?

时间:2015-04-15 13:50:19

标签: php mysql sql-update

我将问题简化为简单状态。

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 :(得分:0)

你必须但你的单引号之间的价值''因为它是文本可能就是那样的

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

答案 1 :(得分:0)

$statement2=$db->prepare("update `table` set `f2`=concat(`f2`,'haha');");