首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调试SQL语法中的错误?

如何调试SQL语法中的错误?
EN

Stack Overflow用户
提问于 2012-08-27 14:54:38
回答 4查看 7.6K关注 0票数 3

我对SQL/PHP很陌生,无法克服错误信息:

代码语言:javascript
复制
"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‘,我只有以下几个部分:

代码语言:javascript
复制
//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. 我不觉得这有什么问题。
  2. 我不知道如何调试,该如何继续查找错误?有什么线索吗?

我不确定我是否在正确的位置寻找脚本,但这是我唯一有“1”的条目,错误信息告诉我要查看.

在检查手册之后,SQL中的语法似乎是正确的.我在WAMP服务器上使用MySQL 5.5.24。

我正在尝试安装“登录-重定向v1.31”以进行用户身份验证。

如果有人能帮我,我会很感激的!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-27 14:56:55

停止

在进一步研究这段代码之前,请阅读有关SQL injection attacks修复代码的内容。

您的语法错误几乎肯定是由注入错误引起的,这无疑来自您要插入到查询中的数据中的一个额外的'。您正在将原始用户提供的数据传递到查询中,允许恶意用户接管您的服务器、破坏您的数据库、踢您的狗等等。

除此之外,做一个echo $sql并在这里粘贴结果,我们将能够准确地显示坏的'在哪里。

票数 9
EN

Stack Overflow用户

发布于 2012-08-27 14:58:31

第一步是隔离查询所引用的部分。

您的错误是引用列和插入字段。

我看到你正在通过一个'1''1'是一个字符串,而1是一个整数。

如果列架构表示它是int列类型,则删除单引号,然后重试。

票数 0
EN

Stack Overflow用户

发布于 2012-08-27 14:59:08

首先,请这样做:

  1. 使用echo语句打印$sql以屏幕(或将其记录到文件中)。
  2. 将该语句复制到您最喜欢的SQL编辑器,并通过它来查找错误。

如果不知道代码执行时绑定到哪些变量,就很难调试动态SQL语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12144441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档