更新数据时出现禁止错误

时间:2014-10-27 09:33:44

标签: php mysql

我尝试用一​​些反馈更新记录

禁止

You don't have permission to access /xxx/xxx/update.php on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Mysql查询是:

mysql_query("UPDATE `table_name` SET `feedback`='".$_REQUEST['feedback']."' WHERE `cid` =xx");

反馈是customer is having 6 windows and 3 patio doors。当我删除havingand时,我才能提交,因为这些是MYSQL个保留字。更改了文件权限,但没有任何作用。

.htaccess包含

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domainname\.com$ [NC]
RewriteRule ^(.*)$ http://www.domainname.com/$1 [R=301,L]
#AddType application/x-httpd-php4 .php .htm .html

# Hide images, css and js
Options -Indexes

ErrorDocument 404 http://www.domainname.com/404.html

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这是因为$_REQUEST['feedback']中的值包含未正确转义的MySQL关键字。

以下答案应该可以解决您的问题,尽管我建议不要直接从请求传递数据并打开应用程序到SQL注入。

$query = sprintf("UPDATE `table_name` SET `feedback`='%s' WHERE `cid` ='xx'",
        mysql_real_escape_string($_REQUEST['feedback']));
mysql_query($query);

虽然上面的代码应该可以解决您手头的问题,但请阅读this stackoverflow question,了解为什么要放弃使用传统的mysql_函数并开始使用PDO方法和prepared statements