我对SQL/PHP很陌生,无法克服错误信息:
"You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '1',"我试图调试这个错误,但是我在脚本中查找'1‘,我只有以下几个部分:
//enter information into table
$sql = "INSERT INTO $_SESSION[table_name] VALUES
('$_POST[first_name]', '$_POST[last_name]', '$_POST[user_name]',
password('$_POST[password]'), 'Administrators', '', '', '0', '$_SESSION[admin_email]',
'$_POST[redirect_to]', '1', '$date')";
$result = @mysql_query($sql,$connection) or die(mysql_error());
if($result)
{...我不确定我是否在正确的位置寻找脚本,但这是我唯一有“1”的条目,错误信息告诉我要查看.
在检查手册之后,SQL中的语法似乎是正确的.我在WAMP服务器上使用MySQL 5.5.24。
我正在尝试安装“登录-重定向v1.31”以进行用户身份验证。
如果有人能帮我,我会很感激的!
发布于 2012-08-27 14:56:55
停止
在进一步研究这段代码之前,请阅读有关SQL injection attacks和修复代码的内容。
您的语法错误几乎肯定是由注入错误引起的,这无疑来自您要插入到查询中的数据中的一个额外的'。您正在将原始用户提供的数据传递到查询中,允许恶意用户接管您的服务器、破坏您的数据库、踢您的狗等等。
除此之外,做一个echo $sql并在这里粘贴结果,我们将能够准确地显示坏的'在哪里。
发布于 2012-08-27 14:58:31
第一步是隔离查询所引用的部分。
您的错误是引用列和插入字段。
我看到你正在通过一个'1'。'1'是一个字符串,而1是一个整数。
如果列架构表示它是int列类型,则删除单引号,然后重试。
发布于 2012-08-27 14:59:08
首先,请这样做:
echo语句打印$sql以屏幕(或将其记录到文件中)。如果不知道代码执行时绑定到哪些变量,就很难调试动态SQL语句。
https://stackoverflow.com/questions/12144441
复制相似问题