我有以下代码。
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
来自雅虎文本编辑器。
答案 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\'';