PHP中的textarea问题

时间:2011-11-21 10:35:45

标签: php

我有以下代码。

print("  <form action='home.php' method='POST'>
            <textarea name='changemainhometa' id='msgpost'> $home </textarea>
            <input type='submit' name='changemainhomefinal' value='Change' />
         </form> ");

从数据库中提取值$home

现在我更改textarea中的文本并按提交。

然后,执行以下代码:

$value = $_POST["changemainhometa"];
print($value);
$query = mysql_query("UPDATE contentdata 
                      SET text = $value 
                      WHERE key = 'home' ");  
print("Succesvol gewijzigd");

但是现在,每次执行此代码时,它都不会更新,但会将$value设置为数据库中的旧变量,而不是我在textarea中输入的新变量

顺便说一下,id:msgpost来自雅虎文本编辑器。

4 个答案:

答案 0 :(得分:1)

您正在将未转义的未加引号的字符串放入查询中间。除了非常具体的输入之外,它将发生错误(或运行SQL注入攻击)。

使用bound parameters在SQL中包含变量,不要将字符串混合在一起。

答案 1 :(得分:1)

此查询:

mysql_query("UPDATE contentdata 
                  SET text = $value 
                  WHERE key = 'home' ");  

会生成错误,说您的查询不正确,因此不会更新任何内容。您是否启用了错误报告?如果是这样,您应该看到警告或错误。

如果在$ value附近添加单引号(所以SET text = '$value')将解决此问题,但请确保正确地转义数据库输入(使用mysql_real_escape_string(),甚至更好,使用预准备语句)。< / p>

答案 2 :(得分:0)

我已经修好了,这是YUI简单编辑器中的一个错误,它不允许我提交数据,以备将来参考,我在配置中用submitHandle:true修复了这个。

答案 3 :(得分:-4)

'UPDATE contentdata 
                      SET text = \''.$value.'\' 
                      WHERE key = \'home\'';