我有以下代码。
print(" <form action='home.php' method='POST'>
<textarea name='changemainhometa' id='msgpost'> $home </textarea>
<input type='submit' name='changemainhomefinal' value='Change' />
</form> ");
从数据库中提取值$home
现在我更改文本区域中的文本,然后按提交。
然后,执行以下代码:
$value = $_POST["changemainhometa"];
print($value);
$query = mysql_query("UPDATE contentdata
SET text = $value
WHERE key = 'home' ");
print("Succesvol gewijzigd");
但现在,每次我执行此代码时,它都不会更新,而是将$value
设置为数据库中的旧变量,而不是我在文本区域中输入的新变量
顺便说一下。,id:msgpost
来自yahoo文本编辑器。
您正在将一个未加注释、未加引号的字符串放入查询的中间。除了非常具体的输入外,它将出错(或运行SQL注入攻击(。
使用绑定参数在SQL中包含变量,不要将字符串混合在一起。
此查询:
mysql_query("UPDATE contentdata
SET text = $value
WHERE key = 'home' ");
将生成一个错误,表示您的查询不正确,因此不会更新任何内容。您是否启用了错误报告?如果是这样,您应该看到一个警告或错误。
如果在$value周围添加单引号(因此SET text = '$value'
(将解决此问题,但一定要正确转义数据库输入(使用mysql_real_escape_string()
,或者更好的是,使用准备好的语句(。
我已经修复了,这是YUI简单编辑器中的一个错误,不允许我提交数据,为了将来参考,我在配置中用submitHandle:true
修复了这个问题。
'UPDATE contentdata
SET text = '''.$value.'''
WHERE key = ''home''';