Mysql windows IIS server 2003上的SQL查询使用传递的变量jQuery AJAX中断

Mysql windows IIS server 2003上的SQL查询使用传递的变量jQuery AJAX中断,mysql,iis,jquery,windows-server-2003,Mysql,Iis,Jquery,Windows Server 2003,在当前的项目中,我遇到了一个奇怪的问题。我有一个html页面,它对php文件执行AJAX调用,并传递一个变量。php文件使用此变量创建SQL查询,生成XML文件,并返回结果 在我的网络服务器上,这一切都很好。但是,当移动到Windows 2003 IIS(永久主服务器)服务器时,它会中断 迄今为止的观察结果。。。 此操作在windows server上中断: $qry = "SELECT * FROM structure_name WHERE ID = $variable ORDER by I

在当前的项目中,我遇到了一个奇怪的问题。我有一个html页面,它对php文件执行AJAX调用,并传递一个变量。php文件使用此变量创建SQL查询,生成XML文件,并返回结果

在我的网络服务器上,这一切都很好。但是,当移动到Windows 2003 IIS(永久主服务器)服务器时,它会中断

迄今为止的观察结果。。。 此操作在windows server上中断:

$qry  = "SELECT * FROM structure_name WHERE ID = $variable ORDER by ID ASC";
$results = mysql_query($qry);
此操作在windows server上中断:

$variable = 5; 
$qry  = "SELECT * FROM structure_name WHERE ID = $variable ORDER by ID ASC";
$results = mysql_query($qry);
$variable = 5; 
$qry  = "SELECT * FROM structure_name WHERE ID = " + $variable + "ORDER by ID ASC";
$results = mysql_query($qry);
此操作在windows server上中断:

$variable = 5; 
$qry  = "SELECT * FROM structure_name WHERE ID = $variable ORDER by ID ASC";
$results = mysql_query($qry);
$variable = 5; 
$qry  = "SELECT * FROM structure_name WHERE ID = " + $variable + "ORDER by ID ASC";
$results = mysql_query($qry);
这项工作:

$qry  = "SELECT * FROM structure_name WHERE ID = 5 ORDER by ID ASC";
$results = mysql_query($qry);
因此,服务器似乎不喜欢在查询字符串中包含变量。
有什么建议吗?

您看到了什么错误消息?如果您没有看到错误(或者只是收到一个HTTP 500错误),那么在PHP.ini文件中打开错误或查看PHP错误日志。这将给我们一些很好的洞察到底出了什么问题

不过,您的第三个陈述确实存在两个问题:

  • 它在单词ORDER之前需要一个空格,否则$variable会像这样被打破:其中ID=5orderby
  • 它使用加号,在PHP中是加法,而不是串联。使用点/句点将其连接为字符串
  • 应该是这样的:

    $variable = 5; 
    $qry  = "SELECT * FROM structure_name WHERE ID = " . $variable . " ORDER by ID ASC";
    $results = mysql_query($qry);
    
    另一个想法:使用MySQL分析器(http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html)查看要发送到MySQL服务器的SQL语句。可能是您的MySQL服务器正在生成错误。您还可以查看MySQL是否有可以检查的错误日志

    此外,您可能希望转义输入以避免SQL注入攻击。尝试使用以下方法:

    $variable = 5;
    $qry = sprintf("SELECT * FROM structure_name WHERE ID = %d ORDER by ID ASC",
        mysql_real_escape_string($variable));
    $results = mysql_query($qry);
    
    有关mysql\u查询和sql注入攻击的更多信息,请访问以下链接:

    它是如何“断裂”的?您是否遇到mysql错误?难道它完全不起作用吗?它不返回行吗?