使用来自 html 表单的 NULL 填充 TSQL 查询


Filling a TSQL query with NULL coming from an html form

我有一个html页面,其中包含一个包含几个选择器的表单。

表单由GET通过js函数处理,该函数使用jquery ajax将数据发送到php页面。php 构建 TSQL 查询以选择信息。

如果您没有在选择器中选择任何选项,我的查询中需要一个 NULL。在我尝试过的 js 和 php 页面中:

if($variableFromSelector1 ==’-’){ $variableFromSelector1 =’NULL’;}
if($variableFromSelector2 ==’-’){ $variableFromSelector2 =’NULL’;}

(– 表示在选择器中未选择任何内容)

但这会用与 NULL 不同的"NULL"填充查询

查询过程如下:

   function showData($variableFromSelector1,$variableFromSelector2)
    {  
            $strSqlSelect = "EXECUTE mybd.dbo.myprocedure 
            @var1='".$variableFromSelector1."',
            @var2='".$variableFromSelector2."'";
    }

如果选择器中未选择任何选项,如何获取具有 NULL 的查询?

多谢

if($variableFromSelector1 ==’-’){ $variableFromSelector1 = NULL;}
if($variableFromSelector2 ==’-’){ $variableFromSelector2 = NULL;}
function showData($variableFromSelector1,$variableFromSelector2)
{  
  $var1 = is_null($variableFromSelector1) ? 'NULL' : "'{$variableFromSelector1}'";
  $var2 = is_null($variableFromSelector2) ? 'NULL' : "'{$variableFromSelector2}'";
  $strSqlSelect = "EXECUTE mybd.dbo.myprocedure 
  @var1=".$var1.",
  @var2=".$var2;
}

还要记住清理所有输入以防止SQL注入。

当您将NULL发送到存储过程时,您正在引用它。请尝试以下操作:

$strSqlSelect = "EXECUTE mybd.dbo.myprocedure 
@var1=" . ($variableFromSelector1 == '-' ? 'NULL' : "'{variableFromSelector1}'" . ",
@var2=" . ($variableFromSelector2 == '-' ? 'NULL' : "'{variableFromSelector2}'" . ";